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

skm*_*skm 1 c++ string

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

char array[2];

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

string name( array );
cout<<"In string format: "<<name;
Run Code Online (Sandbox Code Playgroud)

Bry*_*hen 6

你的字符串不是以null结尾的字符串.试试这个

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;
Run Code Online (Sandbox Code Playgroud)


小智 5

数组不是null终止,你应该这样做:

char array[3];
array[0] = 'A';
array[1] = 'B';
array[2] = 0;
Run Code Online (Sandbox Code Playgroud)

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