Цикл проверки ввода в C ++ со строками - PullRequest
0 голосов
/ 28 марта 2011

Я только изучаю C ++ (1 неделя опыта) и пытаюсь написать цикл проверки ввода, в котором пользователю предлагается ввести «Да» или «Нет».Я понял это, но у меня есть чувство, что есть лучший способ приблизиться к этому.Вот что я придумал:

{
    char temp[5]; // to store the input in a string
    int test; // to be tested in the while loop

    cout << "Yes or No\n";
    cin.getline(temp, 5);

    if (!(strcmp(temp, "Yes")) || !(strcmp(temp, "No")))    // checks the string if says Yes or No
        cout << "Acceptable input";                         // displays if string is indeed Yes or No
    else                                                    //if not, intiate input validation loop
    {
        test = 0;
        while (test == 0) // loop
        {
            cout << "Invalid, try again.\n";
            cin.getline(temp, 5);               // attempts to get Yes or No again
            if (!(strcmp(temp, "Yes")) || !(strcmp(temp, "No")))  // checks the string if says Yes or No
                test = 1;         // changes test to 1 so that the loop is canceled
            else test = 0;        // keeps test at 0 so that the loop iterates and ask for a valid input again
        }
        cout << "Acceptable input";
    }

    cin.ignore();
    cin.get();

    return 0;
}

Я прошу прощения за свои плохие заметки, не уверен, что имеет отношение.Я также использую заголовок cstring.

Ответы [ 2 ]

5 голосов
/ 28 марта 2011

Еще лучше ИМО:

std::string answer;

for(;;) {
    std::cout << "Please, type Yes or No\n";
    getline(std::cin, answer);

    if (answer == "Yes" || answer == "No") break;
}

Вы также можете преобразовать ответ в нижний регистр, который позволяет пользователю вводить не только «Да», но также «Да», «Да» и т. Д. См. этот вопрос

0 голосов
/ 28 марта 2011

Я думаю, вы хотите цикл do while:

bool test = false;
do 
{
   cout << "Yes or No\n";
   cin.getline(temp, 5);
   if (!(strcmp(temp, "Yes")) || !(strcmp(temp, "No"))) // checks the string if says Yes or No
   {
       cout << "Acceptable input"; // displays if string is indeed Yes or No
       test = true;
   }
   else
   {
       cout << "Invalid, try again.\n";
   }

} while (!test);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...