C ++:在while(cin)循环中,有时循环被忽略

时间:2017-04-22 04:01:07

标签: c++

在我的代码中,我尝试创建一个循环,但每隔一段时间,整个循环在得到我的输入后被忽略。

这是循环:

while(std::cin >> word){
        std::cin.clear();

        qType = (rand()%2) + 1;
        letter = (rand()%26) + 1;
        if(qType == 1){
            std::cout << letter << std::endl;
        }else if(qType == 2){
            std::cout << Letters[letter] << std::endl;
        }
}

当我写输入时,前几次循环成功输出一个字母或相应的数字,但不久之后,它就会停止这样做。我发现有类似问题的人,但对他们来说解决方案是添加一个cin.clear();函数,我首先添加到最后,然后开始,但它没有解决问题。

3 个答案:

答案 0 :(得分:0)

首先,循环时应该结束什么?你设置循环的方式永远不会结束。你也没有在你的循环中使用单词变量,所以它的重点是什么。如果你想循环直到用户输入一些退出代码,它应该如下所示:

Infinity

答案 1 :(得分:0)

试试这个

h1 {
        position: absolute;
        top: 0px;

}

答案 2 :(得分:0)

首先,你没有给出终止条件,所以这段代码可能适合你...

while(word!="exit"){
    cin >> word;

    qType = (rand()%2) + 1;
    letter = (rand()%26) + 1;
    if(qType == 1){
        cout << letter << std::endl;
    }else if(qType == 2){
        cout << Letters[letter] << std::endl;
    }
            cin.clear();

}