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


当前回答

我想提到一个使用用户定义的字面量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;

其他回答

不知道为什么除了Erik之外没有人提到这一点,但根据这一页,赋值操作符工作得很好。不需要使用构造函数、.assign()或.append()。

std::string mystring;
mystring = "This is a test!";   // Assign C string to std:string directly
std::cout << mystring << '\n';
char* data;
std::string myString(data);

我想提到一个使用用户定义的字面量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;
const char* charPointer = "Hello, World!\n";
std::string strFromChar;
strFromChar.append(charPointer);
std::cout<<strFromChar<<std::endl;

通过构造函数传入:

const char* dat = "my string!";
std::string my_string( dat );

你可以使用string.c_str()函数来实现相反的效果:

std::string my_string("testing!");
const char* dat = my_string.c_str();