Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите пожалуйста с русскими словами в C++. (http://forum.oszone.net/showthread.php?t=176095)

dakishi 19-05-2010 22:00 1417046

Помогите пожалуйста с русскими словами в C++.
 
Здравствуйте! У меня компилятор Microsoft Visual C++. Проблема такая - пишу в условии, что, если я ввожу это слово, у меня на экране выводится цифра "1", если условие не выполнено, то "2". Но, если я вставляю русские буквы, (я могу только создать, чтобы русские буквы выводились, но не вводились), у меня он не принимает русские буквы, точнее условие не работает, а с английскими все в порядке. Вот код, что бы было понятнее:
Код:

#include<iostream>
#include<string>
using namespace std;
main()
{
string q1;
wchar_t*rus[]={L"",L"",L""};
wcout.imbue(locale(".866"));
cin >> q1;
if (q1 == "вода") {
cout << "1";
} else {
cout << "2";
}
wcout << rus[1];
return 0;
}


EvgeniyQQQ 20-05-2010 10:21 1417274

dakishi, дело всё в том, что вы читаете символы из консоли, а там кодировка cp866. Это у вас не указано. Символы записанные в q1 так и останутся в этой кодировке (я так думаю) и сравнивать их нужно будет со строкой в той же кодировке cp866. Как вариант, можно пользоваться "юникодным" строковым типом.
Вот рабочий пример:
Код:

void main()
{
        wstring q1;
        wcin.imbue(locale(".866"));
        wcin >> q1;
        if(q1 == L"вода")  cout << "1";
        else cout << "2";
}



Время: 11:04.

Время: 11:04.
© OSzone.net 2001-