簡體   English   中英

如何在C ++中將字符串分配給char * pw

[英]How to assign a string to char *pw in c++

如何在C ++中將字符串分配給char * pw

喜歡...

char * pw =一些字符串

??

對於常量初始化,您可以簡單地使用

const char *pw = "mypassword";

如果字符串存儲在變量中,並且您需要復制字符串,則可以使用strcpy()函數

char *pw = new char(strlen(myvariable) + 1);
strcpy(pw, myvariable);
// use of pw
delete [] pw; // do not forget to free allocated memory

如果您只想為pw分配字符串文字,則可以像char *pw = "Hello world";

如果您有一個C ++ std::string對象,您想將其值分配給pw ,則可以像char *pw = some_string.c_str() 但是, pw指向的值僅在some_string的生命期內有效。

如果您指的是std::string ,則可以通過調用c_str來獲取指向C樣式字符串的指針。 但是指針必須是const

const char *pw = astr.c_str();

如果pw指向您先前分配的緩沖區,則可能需要將字符串的內容復制到該緩沖區中:

astr.copy(pw, lengthOfBuffer);

如果您以字符串文字開始,那么它已經是一個指針:

const char *pw = "Hello, world".

再次注意const字符串文字不應被修改,因為它們會被編譯到您的程序中。

但是,如果在任何地方都使用std::string通常您會擁有更好的時間:

std::string astr("Hello, world");

順便說一句,您需要包括正確的標題:

#include <string>

我認為您可能想這樣做:

using namespace std;
string someString;
geline(cin,someString);
char *pw = strdup(someString.c_str());

但是,請考慮采用其他方式。 查看http://tiswww.case.edu/php/chet/readline/rltop.html(GNU Readline庫)。 我不知道有關細節,只是聽說了。 其他人可能有更詳細的提示或其他提示,可從標准輸入中讀取密碼。

如果只想將其用於單個調用,而無需復制someString的內容,則可以直接使用someString.c_str()如果需要使用const char *

您稍后必須在pw上使用free

字符串必須用雙引號括起來,例如:

char * pStr =“ stackoverflow”;

它將字符串文字存儲在程序的只讀存儲器中。 稍后對其進行修改可能會導致UB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM