Как следует использовать кириллицу в программах на C++? Первое, что приходит в голову - нужно использовать Unicode. Посмотрел примеры, на первый взгляд кажется, что следующий код должен работать:
#include <iostream> #include <string>
using namespace std;
int main(int argc, char *argv[]) { wcout << L"Test Тест"; }
Однако он выдаёт только английский текст, а кириллицу - нет. Если посмотреть бинарник, то там есть строка вида: "T...e...s...t...Т...е...с...т...", где точками заменены символы 0x00. Это в кодировке koi8-r... Я предполагал, что компилятор увидит, какая у меня установлена локаль и в соответствие с ней перекодирует исходный текст, но очевидно этого не происходит. Как быть?
Используется Debian Sarge 3.1, gcc version 3.3.5 (Debian 1:3.3.5-13). Команда locale выдаёт следующее:
LANG=ru_RU.KOI8-R LC_CTYPE="ru_RU.KOI8-R" LC_NUMERIC="ru_RU.KOI8-R" LC_TIME="ru_RU.KOI8-R" LC_COLLATE="ru_RU.KOI8-R" LC_MONETARY="ru_RU.KOI8-R" LC_MESSAGES="ru_RU.KOI8-R" LC_PAPER="ru_RU.KOI8-R" LC_NAME="ru_RU.KOI8-R" LC_ADDRESS="ru_RU.KOI8-R" LC_TELEPHONE="ru_RU.KOI8-R" LC_MEASUREMENT="ru_RU.KOI8-R" LC_IDENTIFICATION="ru_RU.KOI8-R" LC_ALL=