【发布时间】:2011-01-15 14:42:35
【问题描述】:
谁能告诉我如何在 C++ 程序中将 C 风格的字符串(即 char* )转换为 C++ 风格的字符串(即 std::string)?
非常感谢。
【问题讨论】:
谁能告诉我如何在 C++ 程序中将 C 风格的字符串(即 char* )转换为 C++ 风格的字符串(即 std::string)?
非常感谢。
【问题讨论】:
std::string 可以将char * 作为constructor 参数,并通过多个运算符。
char * mystr = "asdf";
std::string mycppstr(mystr);
或语言律师
const char * mystr = "asdf";
std::string mycppstr(mystr);
【讨论】:
char* cstr = //... some allocated C string
std::string str(cstr);
cstr的内容将被复制到str。
这也可以用于以下操作:
std::string concat = somestr + std::string(cstr);
其中somestr 已经是`std::string`
【讨论】:
您可以使用string class constructor,它将char* 作为参数。
char *str = "some c style string";
string obj(str);
【讨论】:
另一种进行转换的方法是调用一个以const std::string&为参数的函数:
void foo(const std::string& str);
void bar()
{
char* str= ...
foo(str);
}
我认为在函数调用边界进行转换会更整洁。
【讨论】:
foo() 是任何带有const std::string& 的函数。它可能是你写的。我的回答只是一种使用模式,你有一个 c 字符串并想要转换它。它还将生成 c 字符串的代码部分与以 std::string 的形式使用数据的部分分开。