将c样式字符串转换为c ++样式字符串

ass*_*sin 17 c++ c-strings

谁能告诉我如何在C++程序中将C样式字符串(即char*)转换为c ++样式字符串(即std :: string)?

非常感谢.

Joh*_*don 24

std::string可以采取char *作为构造参数,并且经由多个操作员.

char * mystr = "asdf";
std::string mycppstr(mystr);
Run Code Online (Sandbox Code Playgroud)

或语言律师

const char * mystr = "asdf";
std::string mycppstr(mystr);
Run Code Online (Sandbox Code Playgroud)

  • 我想知道为什么每个人都回应这个使用有缺陷的(但标准允许的)char*类型的字符串文字.所有字符串文字都是只读的,因此应使用char const*类型.std :: string采用的参数也是char const*. (6认同)

zah*_*pov 9

char* cstr = //... some allocated C string

std::string str(cstr);
Run Code Online (Sandbox Code Playgroud)

cstr将复制的内容str.

这可以在操作中使用,如:

std::string concat = somestr + std::string(cstr);
Run Code Online (Sandbox Code Playgroud)

哪里somestr已经是`std :: string``