Ввод и вывод русского текста в консоли windows
От: Rediska555  
Дата: 13.08.11 18:18
Оценка:
Здравствуйте!
Недавно начал изучать С++ и сразу возник вопрос по поводу ввода и вывода кириллических символов в консольном приложении 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;
}

Вроде все работает, но не знаю на сколько это решение правильное и есть ли решение для обычных потоков ввода и вывода?
Помогите, пожалуйста!
русский текст в консоли windows setlocale #include<locale>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.