[英]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.