LINUX.ORG.RU

Как правильно использовать кириллицу в программах на C++?


0

0

Как следует использовать кириллицу в программах на 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=

★★★★

Ответ на: комментарий от anonymous

правда gcc обновить придется

anonymous
()

А есть ли вообще какое-нибудь руководство, как под Linux на C++ использовать кириллицу и другие языки? Например, что лучше - использовать строки в том виде, что и в C или же тип string из С++, использовать 8-битные кодировки, utf-8 или типы wchar_t/wstring, как при этом правильно настраивать локаль и т.д.? Как я представляю, для правильного ответа на эти вопросы обычного учебника по C++ мало - наверное нужно учитывать, что используется в распространённых библиотеках и т.д.

askh ★★★★
() автор топика
Ответ на: комментарий от askh

если не ошибаюсь то есть статья на opennet.ru

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