Обработка русского текста [дубликат]

378
19 декабря 2016, 20:03

На данный вопрос уже ответили:

  • Русский язык в консоли 1 ответ

Здравствуйте. У меня стоит английская винда и студия. Мне понадобилось обработать русский текст, но при вводе строки, в дебаггере вижу, что строка состоит из одних символов '?'. Подскажите пожалуйста, что нужно сделать? Использую

std::string
Answer 1

Вот простое решение. Кодировка консоли и локаль устанавливаются на русскую кодировку CP_1251. В этом случае чтение/запись в консоль где-то "внутри" оборачивается преобразованием из Юникода/в Юникод.

#include <iostream>
#include <sstream>
#include <windows.h>
int main()
{
    SetConsoleCP( 1251 ); // настраиваем кодировку консоли (ввод)
    SetConsoleOutputCP( 1251 ); // (вывод)
    // настраиваем внутренние механизмы на эту кодировку
    setlocale(LC_ALL, ".1251");
    std::wstring line;
    std::getline( std::wcin, line );
    std::wcout << L"Привет, " << line << std::endl;
}

У меня получилось добиться того, чтобы сама консоль работала в режиме "Юникод" на вывод, но тот же фокус на ввод не прошёл:

int main()
{
    _setmode( fileno(stdout), _O_WTEXT );
    std::wstring line( L"Привет2" );
    std::wcout << line << std::endl;
}
READ ALSO
Почему округлятся переменная

Почему округлятся переменная

нахожу среднее арифметическое всех элементов двумерно массива но почему-то значение округлется, а мне нужно чтобы выдавало что то вроде...

330
Lint синтаксический анализатор

Lint синтаксический анализатор

нужно сгенерировать такую ошибку

337
Алгоритм Флойда-Уоршелла

Алгоритм Флойда-Уоршелла

У меня есть задание

415
Вывод двумерного массива в файл

Вывод двумерного массива в файл

мне нужно вывести матрицу n*n, а всё выводится в одну строчку, что неправильно?

349