2014-01-20 80 views
1

我得到一個字符是在陣列形式,然後我正在將其轉換成字符串。如果我以字符串形式打印,打印所需字符後會打印出奇怪的東西。字符轉換成字符串被打印奇怪值C++

char array[2]; 

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

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

回答

5

數組不空終止,你應該這樣做:

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

這是由於許多使用字符編碼(如null)的字符串例程來確定字符串結尾的位置。這是違反直覺的,是許多問題的原因。我建議總是使用std :: string而不是直接操作字符數組。

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; 
+0

謝謝,它工作:) – skm

1

一個數組是一個指針。當你說字符串名稱(數組)時,你將內存中的文字地址傳遞給數組的位置。 。 程序會從該指針位置讀取,直到讀到一個空字符可能是在內存中的任何地方,除非你把它放在