2

решил девушке сварганить простенькую оконную программку, в итоге столкнулся с такой проблемой: при использовании оператора if, перескакивает на else. как решить данную проблему?

#include <string>
#include <windows.h>
#include <locale.h>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUSSIAN");
string a;
string b;
cout << "Введите ваше имя => ";
cin >> a;
cout << endl;
cout << "Введите вашу фамилию => ";
cin >> b;
cout << endl;
if (a == "ннн" && b == "ннн")
{
    cout << "Приветствую!\n" << endl;
    cout << endl;
    cout << "``````````````````````````````````````````````````\n";
    cout << "``````````````````````````````````````````````````\n";
    cout << "``````````````````````````````````````````````````\n";
    cout << "`````10000001````````000000001````````````````````\n";
    cout << "``10000000000000``00000000000001``````````````````\n";
    cout << "`10000000000000000000000000000000`````````````````\n";
    cout << "100000000000000000000000000000000`````````````````\n";
    cout << "0000110000000000000000001110000001````````````````\n";
    cout << "00001`````````0000110````````0000`````````````````\n";
    cout << "00000``````````000```````````0000`````````````````\n";
    cout << "`0000```````````0```1000000000000```10000000000```\n";
    cout << "`00000````````````1000000000000001100000000000000`\n";
    cout << "``0000```````````100000000000000000000000000000001\n";
    cout << "``00000``````````000010000000000000000000000000000\n";
    cout << "```000001````````0000````00000100000001``````00000\n";
    cout << "````000000```````0000``1000000110001``````````0000\n";
    cout << "`````000000``````0000000000001``000```````````0000\n";
    cout << "``````0000000`````00000000001````0````````````0001\n";
    cout << "```````10000001```000000000``````````````````0000`\n";
    cout << "`````````0000000`000000001``````````````````00001`\n";
    cout << "``````````100000000000000``````````````````00000``\n";
    cout << "````````````00000000000000````````````````00000```\n";
    cout << "``````````````0000001000000``````````````000000```\n";
    cout << "```````````````1000```0000000``````````1000001````\n";
    cout << "````````````````11`````0000000````````0000001`````\n";
    cout << "````````````````````````00000000````0000000```````\n";
    cout << "``````````````````````````0000000110000001````````\n";
    cout << "```````````````````````````1000000000000``````````\n";
    cout << "`````````````````````````````0000000001```````````\n";
    cout << "```````````````````````````````000001`````````````\n";
    cout << "`````````````````````````````````00```````````````\n";
    cout << "``````````````````````````````````````````````````\n";
    cout << "``````````````````````````````````````````````````\n";
    cout << endl;
}
else
{
    cout << "ккк" << endl;
}

system("PAUSE"); return 0; }

буду признателен за помощь.

  • 1
    ну вы посмотрите что у вас в "a" и "b" и придите к умозаключению – Алексей Шиманский Nov 02 '22 at 15:59
  • 3
    А если она ошибется? Как-то некрасиво получится... Уберите проверку вообще :) – Harry Nov 02 '22 at 15:59
  • 2
    Прикольно будет, если у вас девушка неправильно введёт хотя бы одну букву (например опечатается) :DDDD – Алексей Шиманский Nov 02 '22 at 15:59
  • она и ошибётся, это антонимы, она как параноик всё по нескольку раз проверяет, даже когда просто в телеграме пишет комунибудь – bonus_____ Nov 02 '22 at 16:06
  • 1
    Тогда проще сделать вопрос: вы "Оля Попова?" и одну кнопку "Да" :DDD – Алексей Шиманский Nov 02 '22 at 16:07
  • не горю желанием через всё захолустье бегать от берсерков в виде её одногруппниц :D – bonus_____ Nov 02 '22 at 16:08
  • 1
    Посмотрите вот этот вопрос: https://ru.stackoverflow.com/q/459154/195342 – Harry Nov 02 '22 at 16:30
  • да повторений там не будет, я для проверки рандомные значения поставил – bonus_____ Nov 02 '22 at 16:34

1 Answers1

3

Если запустить в отладчике вашу программу, то мы увидим там такую картину в переменной a после ввода имени:

a 0xXXXXXXXX "­­---­"   char[4]
        [0] -83 '-­'    char
        [1] -83 '-­'    char
        [2] -83 '-­'    char
        [3] 0 '\0'  char

Несмотря на то, что вы прописали setlocale(LC_ALL, "RUSSIAN");, когда вы будете вводить русские символы, вводиться они не будут. Вам нужно поставить кодировку ввода 1251. Перед setlocale(LC_ALL, "RUSSIAN"); добавьте SetConsoleCP(1251);.