Здравствуйте.
То ли у меня в консоли что не так настроено, то ли на с++ не так делаю. Помогите пожалуйста разобраться.
Ubuntu 11.04, компилятор g++ 4.5.2, исходники в кодировке utf-8. Пытаюсь вывести в консоль русские символы, определенные в исходнике.
#include <iostream>
int main() {
std::cout << "проверка" << std::endl;
wchar_t ttest = L'п';
std::wcout << ttest << std::endl;
std::cout << "проверка" << std::endl;
return 0;
}
Слова "проверка" выводятся нормально, а вместо символа 'п' выводится вопросик. Но что странно, если убрать первый вывод слова "проверка", то оно не выводится и во второй раз!
#include <iostream>
int main() {
wchar_t ttest = L'п';
std::wcout << ttest << std::endl;
std::cout << "проверка" << std::endl;
return 0;
}
Почему то здесь выводится только вопросик, слово "проверка" не появляется. Если же вместо вывода в wcout написать вывод в cout:
std::cout << ttest << std::endl;
вместо символа 'п' выводится число 1087. Однако в этом случае так же выводится и слово проверка. При попытке инициализировать без L:
wchar_t ttest = 'п';
Появляется сообщение warning: multi-character character constant.
Если написать так:
std::wcout << L"проверка" << std::endl;
то вместо слова "проверка" будет выведено "?@>25@:0". Но это если до вывода был вывод в cout. Если же во всей программе вывод только в wcout, то будут выведены только вопросики.
Пробовал использовать класс wstring, сделал смешанную строку с английскими и русскими буквами. Длинна строки определяется корректно, но при выводе в wcout русские символы показываются вопросиками. Если использовать string, то при выводе в cout все нормально, но длинна строки некорректна.
В консоли кодировка utf-8, исходники тоже в utf-8. Компилирую простейшим образом:
g++ test.cpp -o test