为什么'做什么时候'循环这样做?

时间:2016-02-15 21:04:51

标签: c++ input while-loop user-input

当我输入一些字符时,该程序会打印一条消息。当我输入两个字符时,它会打印hello world两次,当输入aaaaa时,会打印五条hello world条消息,依此类推!为什么呢?

int _tmain(int argc, _TCHAR* argv[])
{
    char nnn;
    do {
        cout << "hello world" << endl;
        cin >> nnn;
    } while ((nnn != 'y'));

    return 0;
}

这是一个结果:

hello world
d
hello world
ffff
hello world
hello world 
hello world
hello world
y

2 个答案:

答案 0 :(得分:3)

因为您正在阅读charcin >> nnn;每次迭代会读取一个字符,即它会遍历f中的所有ffff个字符。只是因为循环。当没有任何东西可读时,它会停止并等待你的进一步输入。

如果您想一次阅读整个单词/行,您应该使用operator>> / std::getline std::string

答案 1 :(得分:0)

如果您输入ffff,它会认为您输入四次并打印出“hello world”四次,因此请尝试更改char ==&gt;字符串以避免此问题。