Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, pepsicoca, Вы писали:
P>>Она НЕ печатает кириллицу.
P>>Есть другая программа, в которой добавлен вызов std::wcout.imbue(std::locale("rus_rus.866"));:
J>В качестве дикого предположения (я под винду не программирую)...
J>Ты ведь, наверное, имеешь в виду, что не печатает в терминале? Так он не юникодный, скорее всего.
Зная, что терминал не юникодный и зная, что нужно выводить кириллицу (это можно узнать из Юникодного кода кирилических символов) почему бы системе самой перед выводом кирилицы не сделать imbue той локали, которая нужна?
J>Попробуй распечатать в файл, а не на экран консоли, а потом открыть его Блокнотом — в файле будет юникодная русская строка или нет?
J>Если мое предположение верно, то это беда виндовой консоли.
Вот пример с файлом:
#include "stdafx.h"
#include <fstream>
int _tmain(int argc, _TCHAR* argv[])
{
std::wofstream o1("example.txt");
o1<<L"hello"<<std::endl;
o1<<L"привет"<<std::endl;
return 0;
}
Этот пример печатает в файл только латинское hello. Причем не в Юникоде, а в ASCII.