LINUX.ORG.RU

Кириллица в Eclipse CDT


0

0

Здравствуйте! ОС - linux ubuntu Eclipse helios gcc

char c;
cin>>c;
cout<<c;

Ввожу например «г», выводится �. С латинскими символами все нормально работает. А если так

char c[10];
cin>>c;

то и русская буква выводится правильно, но в массив записывается два элемента. например ввожу «ч» и массив с выглядит так

«\321\207\\000\\000\\000\\000\\000\\000\\000»

В чем тут может быть дело?

В чем тут может быть дело?

Дело в том, что char - это один байт, а в мультибайтовых кодировках (в том числе и UTF-8) один символ может занимать больше одного байта. Если нужно хранить строки в массиве посимвольно, причём чтобы один элемент массива - один символ, то используй «широкие символы» wchar_t и wcin/wcout.

Deleted
()
Ответ на: комментарий от Deleted

И не забудь предварительно установить локаль программы в системную (заданную переменными среды):

std::locale syslocale(""); 
wcin.imbue(syslocale); 
wcout.imbue(syslocale); 

Deleted
()

В отсутствии фундаментальных знаний

svu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.