На данный вопрос уже ответили:
Здравствуйте. У меня стоит английская винда и студия. Мне понадобилось обработать русский текст, но при вводе строки, в дебаггере вижу, что строка состоит из одних символов '?'. Подскажите пожалуйста, что нужно сделать? Использую
std::string
Вот простое решение. Кодировка консоли и локаль устанавливаются на русскую кодировку 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;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
нахожу среднее арифметическое всех элементов двумерно массива но почему-то значение округлется, а мне нужно чтобы выдавало что то вроде...
мне нужно вывести матрицу n*n, а всё выводится в одну строчку, что неправильно?