转换为字符串的字符是打印奇怪的值C ++

时间:2014-01-20 22:36:32

标签: c++ string

我得到一个数组形式的字符,然后我将其转换为字符串。如果我以字符串形式打印它,则在打印所需字符后打印出奇怪的东西。

char array[2];

array[0] = 'A';
array[1] = 'B';

string name( array );
cout<<"In string format: "<<name;

3 个答案:

答案 0 :(得分:6)

你的字符串不是null-terminated string。试试这个

char array[3];

array[0] = 'A';
array[1] = 'B';
array[2] = '\0'; // this indicate that the string end here

string name( array );
cout<<"In string format: "<<name;

答案 1 :(得分:5)

数组不是以null结尾,你应该这样做:

char array[3];
array[0] = 'A';
array[1] = 'B';
array[2] = 0;

这是由于许多字符串例程使用像null这样的字符编码来确定字符串结尾的位置。这是违反直觉的,也是许多问题的原因。我建议总是使用std :: string而不是直接操作字符数组。

答案 2 :(得分:1)

数组是一个指针。当你说字符串名称(数组)时,你将内存中的文字地址传递给数组的位置。 程序将从该指针位置读取,直到它读取一个空字符,除非你把它放入内存中,否则它可能在内存中的任何位置。