繁体   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