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


当前回答

通过构造函数传入:

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();

其他回答

char* c1 = 'z';
char* c2 = 'w';
string s1{c1};
string s12{c1, c2};
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';

如果您已经知道char*的大小,可以使用这个

char* data = ...;
int size = ...;
std::string myString(data, size);

这没有使用strlen。

编辑:如果字符串变量已经存在,使用assign():

std::string myString;
char* data = ...;
int size = ...;
myString.assign(data, size);

我需要使用std::string来存储由fgets()检索的数据。

为什么在编程c++时使用fgets() ?为什么不是std::getline()?