我需要使用一个std::字符串来存储由fgets()检索的数据。为此,我需要将fgets()的char*返回值转换为std::string存储在数组中。如何做到这一点呢?


当前回答

char* c1 = 'z';
char* c2 = 'w';
string s1{c1};
string s12{c1, c2};

其他回答

大多数回答都在谈论如何构造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

我想提到一个使用用户定义的字面量s的新方法。这不是新方法,但它会更常见,因为它是在c++ 14标准库中添加的。

多余的:在一般情况下大部分是多余的:

string mystring = "your string here"s;

但是它允许你在宽字符串中使用auto:

auto mystring = U"your UTF-32 string here"s;

这里是它真正的亮点:

string suffix;
cin >> suffix;
string mystring = "mystring"s + suffix;
char* c1 = 'z';
char* c2 = 'w';
string s1{c1};
string s12{c1, c2};

string有一个构造函数:

const char *s = "Hello, World!";
std::string str(s);

注意,这个构造深度复制s处的字符列表,s不应该是nullptr,否则行为未定义。

char* data;
stringstream myStreamString;
myStreamString << data;
string myString = myStreamString.str();
cout << myString << endl;