快速问题:为什么这个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 << ':';
}
它只是垃圾邮件“成分名称:数量:成分名称:数量:......”等等
答案 0 :(得分:3)
不确定fil
是什么。
我认为您的问题是您需要使用循环底部的cin.ignore()
来刷新流(或者使用cin.getline()
来获取您的输入)。否则,输入结尾处的换行符(当您按Enter键提交输入时)将保存到下一个cin
cin >> ing
。因此新行在那里被用完,实际上并没有要求用户提供新的输入。
答案 1 :(得分:0)
我刚尝试了这段代码,我没有遇到任何问题(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;
}