如何在c ++中为char * pw分配一个字符串

时间:2010-02-10 08:34:54

标签: c++

如何在c ++

中为char * pw指定字符串

像...

char * pw =一些字符串

...

5 个答案:

答案 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。