3

在第 (8) 章的C++ without Fear: A Beginner's Guide That Makes You Feel Smart一书中,尝试显示文本文件的部分代码如下:

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

4 回答 4

3

因为input_line是字符串(来自 s 的数组char),所以input_line[0]获取第一个字母 - 这是为了以防用户写“退出”或“退出”,而不仅仅是“Q”

std::cin >> c;将是正确的,如果您只输入一个char并按Enter

于 2011-01-20T12:18:15.157 回答
3

我试过std::cin>>c;但似乎不正确。

没错,如果cchar.

你是对的; 仅仅为了提取一个字符而读取整行是很奇怪的。我从这个列表中推荐一本书。

于 2011-01-20T12:18:46.777 回答
1

您正在从已写入输入行的“数组”中获取第一个字符。

于 2011-01-20T12:19:44.307 回答
-4

非标准解决方案,但适用于 Windows 平台。

您可以使用 conio.h 示例中定义的 getch() 函数:

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

再见

于 2011-01-20T12:33:35.713 回答