C++ Цикл while…do работает на англ не работает на рус

329
24 июня 2017, 12:42

Почему такая программа выполняется корректно:

#include <iostream>
using namespace std;
int main()
{
    setlocale (0, "");
    string first_name;
    string answer;
    do {
        cout << "Are you Ivan?\n";
        cin >> answer;
    }   while (answer != "no");
    cout << "Please type your name and press enter:\n";
    cin >> first_name;
    cout << "Well hello, " << first_name << " :)\n";
}

А такая в упор не реагирует на ответ "нет":

#include <iostream>
using namespace std;
int main()
{
    setlocale (0, "");
    string first_name;
    string answer;
    do {
        cout << "Ты Иван?\n";
        cin >> answer;
    }   while (answer != "нет");
    cout << "Введи своё имя и нажми enter:\n";
    cin >> first_name;
    cout << "Ну здорово, " << first_name << " :)\n";
}
Answer 1

setlocale() это такая коварная функция, которая меняет кодировку вывода, но с вводом все слегка сложнее... Можешь для примера просто вывести переменную с тем что ты вводишь, и сам увидишь что оно на самом деле считывает.

Попробуй использовать вместо этого system("chcp 1251 & cls") (изменение кодировки консоли на Windows 1251), не на всех ОС оно работает, но в основном да

READ ALSO
Решение задачи. Modular Calculator

Решение задачи. Modular Calculator

Задача : http://wwwcodeabbey

296
Как определить хеш рейт GPU?

Как определить хеш рейт GPU?

Как определить хеш рейт GPU? Например с помощью алгоритма sha256Можно определить средствами cocos2d? Или нужно использовать OpenCL?

427
Программа для анализа шаблонов C++

Программа для анализа шаблонов C++

Существует ли программа\инструмент, который по коду, в котором написан шаблон, определяет, как должен выглядеть класс T, который используется...

442