如何在c ++
中为char * pw指定字符串像...
char * pw =一些字符串
...
答案 0 :(得分:7)
对于常量初始化,您只需使用
即可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
答案 1 :(得分:4)
如果您只想将字符串文字分配给pw
,则可以像char *pw = "Hello world";
那样进行。
如果您有一个C ++ std::string
对象,您希望将其分配给pw
的值,则可以像char *pw = some_string.c_str()
那样进行。但是,pw
指向的值仅对some_string
的生命周期有效。
答案 2 :(得分:3)
如果您的意思是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>
答案 3 :(得分:3)
我想你可能想这样做:
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 *
,如果需要free
。
您必须在pw
稍后使用{{1}},
答案 4 :(得分:1)
字符串必须用双引号括起来,如:
char * pStr =“stackoverflow”;
它会将此字符串文字存储在程序的只读存储器中。 后来修改它可能会导致UB。