2014-01-20 2 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; 

Это связано со многими строковыми процедурами, использующими кодировку символов как нуль, чтобы определить, где конец строки. Это противоречиво да и причина многих проблем. Я предлагаю всегда использовать 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

массив является указателем. Когда вы говорите строковое имя (массив), вы передаете в литеральном адресе в памяти расположение массива. . Программа загрузит из этого местоположения указателя, пока он не читает нулевой символ, который может быть где-нибудь в памяти, если не поставить его в

Смежные вопросы