std:string的c_str()不是能自动添加\0吗
std::string的c_str()不是会自动添加\0吗?
char a[] = { 'a','b','c'};
string str1( a );
cout<<str1.c_str()<<endl;
为什么输出的结果abc后面还有乱码显示?
------解决思路----------------------
因为你的第一行就不对
------解决思路----------------------
因为你的a没有结束符,所以在构造str1的时候就构造错了
------解决思路----------------------
char a[] = { 'a','b','c'};
string str1( a,3); // 如果本身char数组没有'\0',构造函数里要指明个数
cout<<str1.c_str()<<endl;
------解决思路----------------------
第一个构造函数参数需要字符串, 而你的实参不是一个字符串。
------解决思路----------------------
关键还是0字符的问题
详解可以看我的视频教程
------解决思路----------------------
构造函数使用错误,可以看一下string构造函数的所有重载,cplusplus.com
------解决思路----------------------
char a[] = { 'a','b','c'}; 因为这个没有\0结尾.
导致string str1( a );在构造的时候就会一直往"c"后面继续读取, 直到遇到\0, 这时乱码就已经出现.
然后你再cout<<str1.c_str()<<endl;输出肯定就是乱码了.
------解决思路----------------------
第一步就出现了错误
char a[] = { 'a','b','c'};
string str1( a );
cout<<str1.c_str()<<endl;
为什么输出的结果abc后面还有乱码显示?
------解决思路----------------------
因为你的第一行就不对
------解决思路----------------------
因为你的a没有结束符,所以在构造str1的时候就构造错了
------解决思路----------------------
char a[] = { 'a','b','c'};
string str1( a,3); // 如果本身char数组没有'\0',构造函数里要指明个数
cout<<str1.c_str()<<endl;
------解决思路----------------------
string (const char* s);
string (const char* s, size_t n);
第一个构造函数参数需要字符串, 而你的实参不是一个字符串。
------解决思路----------------------
关键还是0字符的问题
详解可以看我的视频教程
------解决思路----------------------
构造函数使用错误,可以看一下string构造函数的所有重载,cplusplus.com
------解决思路----------------------
char a[] = { 'a','b','c'}; 因为这个没有\0结尾.
导致string str1( a );在构造的时候就会一直往"c"后面继续读取, 直到遇到\0, 这时乱码就已经出现.
然后你再cout<<str1.c_str()<<endl;输出肯定就是乱码了.
------解决思路----------------------
第一步就出现了错误