Войти

Показать полную графическую версию : Помогите пожалуйста с русскими словами в C++.


dakishi
19-05-2010, 22:00
Здравствуйте! У меня компилятор 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
dakishi, дело всё в том, что вы читаете символы из консоли, а там кодировка cp866. Это у вас не указано. Символы записанные в q1 так и останутся в этой кодировке (я так думаю) и сравнивать их нужно будет со строкой в той же кодировке cp866. Как вариант, можно пользоваться "юникодным" строковым типом.
Вот рабочий пример:

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




© OSzone.net 2001-2012