Установка локали для wcin

Рейтинг: 1Ответов: 0Опубликовано: 05.06.2023

Создаю клиент-серверное приложение, мини мессанджр. И пытаюсь передать русские символы из Windows в Ubuntu. Постоянно приходили какие-то кракозябры и не мог понять в чем же дело, даже распечатал коды символов в Windows и Ubuntu, получив при этом одинаковый результыт, короче, выяснилось что команда wcin установлена в другой локали, посмотрел в интернете как устанавливается для wcin локаль, что-то вроде: std::wcin.imbue(std::locale("")); но постоянно устанавливается локаль C которая конечно же ничего не отображает корректно, вместо кода 'A'=410, печатается код = 402. Я пытался сделать следующее:

std::string local = std::setlocale(LC_ALL, "");
std::wcout.imbue(std::locale(local));
std::wcin.imbue(std::locale(local));

но получаю ошибку: terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid чтобы я туда не писал(".1251","rus",".utf8" и т.д. ) На все один ответ, не знаю что мне делать с этим. Очень нужно, чтобы кто-то помог установить локаль для wcin.

Ответы

Ответов пока нет.