快速问题:为什么这个while循环不等待输入?
(ing是一个字符串)

while(ing != "0")

{
    cout << "Ingredient name: ";
    cin >> ing;
    for(int i = 0; i < ing.length(); i++)
    {
        if(ing[i] == ' ')
        ing[i] = '#';
    }
    fil << ing << ':';
    cout << "Quantity: ";
    cin >> quant;
    fil << quant << ':';
}

它只是垃圾邮件“成分名称:数量:成分名称:数量:...”等等

最佳答案

不确定fil是什么。

我认为您的问题是您需要在循环底部使用cin.ignore()刷新流(或者执行cin.getline()来获取输入)。否则,输入末尾的换行符(当您按Enter提交输入时)将保存为下一个cin,即cin >> ing。因此,换行符在那里用完了,实际上并没有要求用户提供新的输入。

关于c++ - 不等待cin的while循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10558934/

10-10 23:19