虽然循环不等待 CIN
while loop that doesn't wait for cin
快速问题:为什么这个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
。因此,换行符在那里用完了,实际上并没有要求用户输入新输入。
我刚刚尝试了这段代码,我没有问题(Visual Studio 2008)。请让我们发布更多您的代码,我会尽力提供帮助。
// CinProblem.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <tchar.h>
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string ing;
stringstream fil;
int quant = 0;
while(ing != "0")
{
cout << "Ingredient name: ";
cin >> ing;
for(int i = 0;
i < (int)ing.length();
i++)
{
if(ing[i] == ' ')
ing[i] = '#';
}
fil << ing << ':';
cout << "Quantity: ";
cin >> quant;
fil << quant << ':';
}
system("pause");
return 0;
}
相关文章:
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- C++中的cin.ignore()函数不适用于整个流
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- Problems with std::cin.fail()
- 如何让LLDB在成功时退出,在失败时等待
- 由cin中的字符串中未捕获空白引起的分割错误
- 在C++中使用Cin,我如何在1行中输入
- 将 cin 限制为只有一个
- 等待整个 omp 块完成,然后再调用第二个函数
- "cin >>变量"不等待输入
- 通过 cin/cout 的协议单元测试 - 如何阻止流以等待内容?
- 为什么"cin >> noskipws"不等待输入?
- 尽管Cin.ignore(),CIN不等待输入
- 使用 crontab 运行 C++ 程序,"cin"不会等待我的输入
- cin.getline() 等待输入
- istream_iterator CIN 初始化等待输入
- 程序不等待 cin
- Cin.get() 不会等待按键,即使在它之前有 cin.ignore()
- 虽然循环不等待 CIN
- Cin 没有等待输入