请问有人能告诉我如何在C++程序中将C风格字符串(即char*)转换为C++风格字符串(即std::string)吗?
非常感谢。
std::string
可以将 char *
作为 构造函数 参数,也可以通过多个操作符进行转换。
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`类型。
另一种进行转换的方法是调用一个函数,该函数以const std::string&
作为参数:
void foo(const std::string& str);
void bar()
{
char* str= ...
foo(str);
}
我认为在函数调用边界处进行转换更加整洁。
foo()
是任何接受 const std::string&
的函数,它可以是你自己编写的。我的答案只是一种使用模式,当你有一个 c-string 并想要转换它时使用。 它也将代码部件分离,其中一个 c-string 生成自数据在 std::string
形式中使用的部分。 - quamrana