我需要使用一个std::字符串来存储由fgets()检索的数据。为此,我需要将fgets()的char*返回值转换为std::string存储在数组中。如何做到这一点呢?
当前回答
char* data;
stringstream myStreamString;
myStreamString << data;
string myString = myStreamString.str();
cout << myString << endl;
其他回答
char* data;
stringstream myStreamString;
myStreamString << data;
string myString = myStreamString.str();
cout << myString << endl;
string有一个构造函数:
const char *s = "Hello, World!";
std::string str(s);
注意,这个构造深度复制s处的字符列表,s不应该是nullptr,否则行为未定义。
char* data;
std::string myString(data);
不知道为什么除了Erik之外没有人提到这一点,但根据这一页,赋值操作符工作得很好。不需要使用构造函数、.assign()或.append()。
std::string mystring;
mystring = "This is a test!"; // Assign C string to std:string directly
std::cout << mystring << '\n';
大多数回答都在谈论如何构造std::string。
如果已经构造,只需使用赋值操作符。
std::string oString;
char* pStr;
... // Here allocate and get character string (e.g. using fgets as you mentioned)
oString = pStr; // This is it! It copies contents from pStr to oString