将字符序列的内容放入字符串变量C++; 首先,我正在学习C++,需要你帮助我解决一个问题… 我有以下代码: std::string var2; std::string MSG1="1"; char charSeq[1024]; cout << charSeq << endl; var2 = charSeq; cout << var2 << endl;

将字符序列的内容放入字符串变量C++; 首先,我正在学习C++,需要你帮助我解决一个问题… 我有以下代码: std::string var2; std::string MSG1="1"; char charSeq[1024]; cout << charSeq << endl; var2 = charSeq; cout << var2 << endl;,c++,char,sequences,C++,Char,Sequences,你能给我一些建议吗?在阅读了赛斯的评论后(非常感谢你提供的长度提示),我设法解决了这个问题: 我在charSeq中有两个不可见的字符,它们被复制到var2,这导致了比较的错误结果,我所做的是: cout << "charseq length: " << strlen(charSeq) << endl; cout << "var2 length: " << var2.length() << endl; var2.erase(

你能给我一些建议吗?

在阅读了赛斯的评论后(非常感谢你提供的长度提示),我设法解决了这个问题: 我在charSeq中有两个不可见的字符,它们被复制到var2,这导致了比较的错误结果,我所做的是:

cout << "charseq length: " << strlen(charSeq) << endl;
cout << "var2 length: " << var2.length() << endl;

var2.erase(var2.length()-2,var2.length()); //here is what i did...

cout << "var2 new length: " << var2.length() << endl; // the result was the correct length of the visible characters, and the comparison condition was executed...

cout提示:您试图将充满垃圾的内存块用作字符串。我知道charSeq必须有空终止符才能工作?我可以将其转换为普通字符,然后使用for循环?是的。只需执行
char charSeq[1024]
即可在堆栈上分配1024个字节,并且不会将该内存的值设置为任何值,因此它包含以前存在的任何垃圾。你必须先在内存中放入一个字符串,然后才能正确地使用它。如果只需要一个字符,请使用
char
,而不是
char[]
。为什么要使用字符数组而不是
std::string
呢?@bluescord打印
var2
的长度,看看其中是否有不可见的字符,如果打印时与
MSG1
看起来相同。长度应正好为1或不能等于
“1”
cout << "charseq length: " << strlen(charSeq) << endl;
cout << "var2 length: " << var2.length() << endl;

var2.erase(var2.length()-2,var2.length()); //here is what i did...

cout << "var2 new length: " << var2.length() << endl; // the result was the correct length of the visible characters, and the comparison condition was executed...