我得到一個字符是在陣列形式,然後我正在將其轉換成字符串。如果我以字符串形式打印,打印所需字符後會打印出奇怪的東西。字符轉換成字符串被打印奇怪值C++
char array[2];
array[0] = 'A';
array[1] = 'B';
string name(array);
cout<<"In string format: "<<name;
我得到一個字符是在陣列形式,然後我正在將其轉換成字符串。如果我以字符串形式打印,打印所需字符後會打印出奇怪的東西。字符轉換成字符串被打印奇怪值C++
char array[2];
array[0] = 'A';
array[1] = 'B';
string name(array);
cout<<"In string format: "<<name;
數組不空終止,你應該這樣做:
char array[3];
array[0] = 'A';
array[1] = 'B';
array[2] = 0;
這是由於許多使用字符編碼(如null)的字符串例程來確定字符串結尾的位置。這是違反直覺的,是許多問題的原因。我建議總是使用std :: string而不是直接操作字符數組。
您的字符串不是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;
一個數組是一個指針。當你說字符串名稱(數組)時,你將內存中的文字地址傳遞給數組的位置。 。 程序會從該指針位置讀取,直到讀到一個空字符可能是在內存中的任何地方,除非你把它放在
謝謝,它工作:) – skm