Сравнение вводной строки на русском языке и заранее заданной
Писал проект и наткнулся на проблему, что когда идет сравнение заданной строки и вводной на русском языке, то значение сравнения принимает значение false, вот простейший пример:
#include <iostream>
#include <string>
using namespace std;
int main() {
string a = "Строка";
string b;
cin >> b;
if (a==b) {
cout << "Равны";
}
else {
cout << "Не равны";
}
return 0;
}
Если я введу в cin "Строка", то программа выдаст "Не равны", несмотря на то, что "Строка" == "Строка", хотя если попробовать тоже самое, но на английском языке, сравнение проводится успешно, как пофикисить такую проблему?
Ответы (2 шт):
у меня такая же ерунда на компе, это похоже какая-то системная ошибка виндовс. программа не различает русские символы, к примеру, за буквой "и" закреплен какой- нибудь несуществующий символ. Если закинуть код с русскими символами в онлайн компилятор, всё будет работать, а на среде - нет. Можешь попробовать сменить кодировку на Utf-8, результат тебя приятно удивит, и ты увидишь, что на самом деле ты просил ввести и вывести. А парадокс что на английских символах всё прекрасно работает, можешь проверить. Во вторых, возможно, но вряд-ли, тебе поможет setlocale, смени на RU, может заработает. Абсолютно также с русскими символами.что я только не перепробовал, не удается мне исправить некоторые такие ошибки, даже думаю переходить на линукс- на нем всё безоговорочно работает, в отличие от виндовс.
В общем - решение пока-что для тебя- писать на английском, либо использовать онлайн компилятор. Надеюсь, тебе удастся исправить эту проблему
Если ты используешь классическую командную строку, то сохрани исходник в OEM866. Или измени кодировку консоли на win1251.