C ++ - выход из программы - PullRequest
3 голосов
/ 20 января 2011

В книге C ++ без страха: руководство для начинающих, которая заставляет вас чувствовать себя умным в главе (8) часть кода, пытающаяся отобразить текстовый файл, выглядит следующим образом:

while(1)
{
    for(int i=1; i <= 24 && !file_in.eof(); i++)
    {
        file_in.getline(input_line,80);
        std::cout<<input_line<<std::endl;
    }

    if(file_in.eof())
    {
        break;
    }

    std::cout<<"More? (Press 'Q' and ENTER to quit.)";
    std::cin.getline(input_line,80);
    c=input_line[0]; // <<<<<<
    if(c=='Q'||c=='q')
    {
        break;
    }
}

Часть, которую я здесь не получаю:

c=input_line[0];

Я думаю, что она написана как "Q" или "q".Но зачем использовать эту форму (массив)?И разве нет способа прочитать «Q» или «q» напрямую?

Я пытался std::cin>>c;, но, похоже, он был неправильным.

Есть идеи?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 20 января 2011

Я пытался std::cin>>c;, но, похоже, неправильно.

Это верно, если c - это char.

Вы правы;чтение всей строки только для извлечения одного символа странно.Я рекомендую книгу из этого списка .

3 голосов
/ 20 января 2011

Поскольку input_line является строкой (массив из char s), поэтому input_line[0] получает первую букву - это в том случае, если пользователь пишет "quit" или "Quit", а не просто "Q"

std::cin >> c; будет правильным, если вы введете только один char и нажмете Enter

1 голос
/ 20 января 2011

Вы получаете первый символ из «массива», в который была записана строка ввода.

0 голосов
/ 20 января 2011

НЕСТАНДАРТНОЕ решение , но работает на платформах Windows.

вы можете использовать функцию getch (), определенную в примере conio.h:

#include <conio.h>
...
char c = getch();

пока

...