Сравнение вводной строки на русском языке и заранее заданной

Писал проект и наткнулся на проблему, что когда идет сравнение заданной строки и вводной на русском языке, то значение сравнения принимает значение 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 шт):

Автор решения: Mike Novi

у меня такая же ерунда на компе, это похоже какая-то системная ошибка виндовс. программа не различает русские символы, к примеру, за буквой "и" закреплен какой- нибудь несуществующий символ. Если закинуть код с русскими символами в онлайн компилятор, всё будет работать, а на среде - нет. Можешь попробовать сменить кодировку на Utf-8, результат тебя приятно удивит, и ты увидишь, что на самом деле ты просил ввести и вывести. А парадокс что на английских символах всё прекрасно работает, можешь проверить. Во вторых, возможно, но вряд-ли, тебе поможет setlocale, смени на RU, может заработает. Абсолютно также с русскими символами.что я только не перепробовал, не удается мне исправить некоторые такие ошибки, даже думаю переходить на линукс- на нем всё безоговорочно работает, в отличие от виндовс.
В общем - решение пока-что для тебя- писать на английском, либо использовать онлайн компилятор. Надеюсь, тебе удастся исправить эту проблему

→ Ссылка
Автор решения: Qwertiy

Если ты используешь классическую командную строку, то сохрани исходник в OEM866. Или измени кодировку консоли на win1251.

→ Ссылка