转换一个char *来的std :: string转换一个char *来的std :: string

2019-05-12 15:08发布

我需要使用std::string来存储检索的数据fgets() 要做到这一点,我需要转换char*从返回值fgets()std::string数组中存储。 如何才能做到这一点?

Answer 1:

std::string有这样一个构造函数:

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

只要确保你char *不是NULL ,否则行为是不确定的。



Answer 2:

如果你已经知道的char *的大小,使用这个代替

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

这不strlen的使用。

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

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


Answer 3:

我需要使用的std :: string来存储与fgets获取的数据()。

为什么使用fgets()时,你是编程的C ++? 为什么不std::getline()



Answer 4:

大多数回答了有关构建会谈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


Answer 5:

通过它在通过构造函数:

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


Answer 6:

const char* charPointer = "Hello, World!\n";
std::string strFromChar;
strFromChar.append(charPointer);
std::cout<<strFromChar<<std::endl;


Answer 7:

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


Answer 8:

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

主要是多余的在一般情况下:

string mystring = "your string here"s;

但它允许您使用自动,还具有广泛的字符串:

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

这里是它真正的亮点:

string suffix;
cin >> suffix;
string mystring = "mystring"s + suffix;


Answer 9:

char* data;
std::string myString(data);


Answer 10:

不知道为什么,除了埃里克没有人提到这一点,但根据这个网页 ,赋值运算符的工作就好了。 无需使用构造函数,.assign(),或.append()。

std::string mystring;
mystring = "This is a test!";   // Assign C string to std:string directly
std::cout << mystring << '\n';


Answer 11:

我刚刚与MSVC2005奋力使用std::string(char*)构造就像收视率最高的答案。 当我看到这个版本列为始终信任#4 http://en.cppreference.com/w/cpp/string/basic_string/basic_string ,我想即使是旧的编译器提供了这一点。

我花了这么长时间才意识到,这绝对构造拒不配合(unsigned char*)作为参数! 我得到了失败,以配合这些难以理解的错误消息std::string参数类型,这在当时绝对不是我的目标了。 只是铸造参数与std::string((char*)ucharPtr)解决我的问题...咄!



文章来源: convert a char* to std::string
标签: c++ stdstring