Русский текст в консольных приложениях на C++

Рейтинг: 2Ответов: 2Опубликовано: 03.05.2011

Вот например я пишу

#include <iostream>
using namespace std;
int main(){
    cout << "я программко";
    return 0;
}

но он выводит мне не "я программко", а какой-то №;%:?*:%;№"№;%:?*. Почему это и как с этим бороться?

Ответы

▲ 11

Используйте setlocale(LC_CTYPE,"Russian");

#include <iostream>
using namespace std;
int main(){
setlocale(LC_CTYPE,"Russian");
cout << "я программко";
return 0;
}
▲ 3

Предлагаю программу писать не с устаревшими однобайтными кодировками, а в Unicode. Т.е. используйте wchar и производные. Для создания unicode литерала используйте макрос _T() или литерал L. Пример:

L"this is a literal string"
_T("Hello")

PS: для вывода в юникоде есть wcout:

std::wcout<<L"TestString"<<std::endl;