Здравствуйте!
Недавно начал изучать С++ и сразу возник вопрос по поводу ввода и вывода кириллических символов в консольном приложении Windows. К примеру вот в таком приложении :
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Введите ваше имя: " << endl;
cin >> name;
cout << "Привет " << name << "!" << endl;
system("PAUSE");
return 0;
}
текст выводится абракадаброй. Пробовал в начале функции main вставлять setlocale( 0, "" ) работает только на вывод текста, а введенное имя выводит абракадаброй. У Шилдта не нашел ответа на этот вопрос, хотя наши переводчики и перевели все слова в примерах его книги, но эти примеры выводят нормальный русский текст только в консоли linux.
Нашел еще вот такое решение с использованием широких строк wstring и потоков ввода wcin и вывода wcout:
#include <iostream>
#include <sstream>
#include <locale>
using namespace std;
int main()
{ // установка русской локали
wcout.imbue(locale("rus_rus.866"));
wcin.imbue(locale("rus_rus.866"));
wstring name;
wcout << L"Введите ваше имя: " << endl;
wcin >> name;
wcout << L"Привет " << name << L"!" << endl;
system("PAUSE");
return 0;
}
Вроде все работает, но не знаю на сколько это решение правильное и есть ли решение для обычных потоков ввода и вывода?
Помогите, пожалуйста!