c++ - 如何用 bool 打破 while 循环?
问题描述
我试图让用户键入数据并将它们存储在向量中,因此当输入 -1 时,它将打破整个循环并开始显示向量。但是,即使输入了-1,它当前也无法正常工作,循环仍将继续进行。
void cargo::addCargo(vector<cargo> &userCargo)
{
fstream file;
file.open("cargo.txt", ios::out | ios::app);
int i = 0;
bool checker = true;
cargo newCargo;
while (checker == true)
{
cout << "Enter id" << endl;
if (cin.peek() == '-1')
{
checker = false;
cout << "Hello";
}
else
{
cin >> idCon;
newCargo.setId(idCon);
}
cout << "Enter Destination Country" << endl;
if (cin.peek() == '-1')
{
checker = false;
}
else
{
cin >> destCountryCon;
newCargo.setDestCountry(destCountryCon);
}
cout << "Enter Time" << endl;
if (cin.peek() == '-1')
{
checker = false;
}
else
{
cin >> timeCon;
newCargo.setTime(timeCon);
newCargo.setIndex(i + 1);
userCargo.push_back(newCargo);
}
cout << endl;
i++;
}
//loop to display the entire vector
displayCargo(userCargo);
}
解决方案
您的代码不是独立的,所以我无法为您修复它。务实的答案是break
或continue
带有类似的标志checker
。 peek()
查看下一个字符,当用户输入“-1”时,它将返回“-”而不是多字符常量“-1”。或者,用户可以按下ctrl-d
触发 eof。如果你想使用“-1”(谁想出了那个糟糕的用户体验?),把它读成字符串或整数。
推荐阅读
- python - 有没有办法在散点图中以相等的间隔进行可视化,跳过月份的第一个日期碰撞间隔
- c++ - QDialog自行关闭,我该如何解决?
- python - 让 chromedriver 在 Ubuntu AWS 上工作的问题
- python - 如何在 Python 中使用 PDFKit 发送 cookie?
- android - 编译时出错:ERROR: Cause: compileSdkVersion is not specified
- python - 为什么这个函数只返回列表中的第一项?
- python-3.x - Web Scraping - 迭代
- java - Flux.using 不发射项目
- php - Laravel 将时间戳转换为具有特定时区的日期
- c# - 如何知道当前文本框并通过按钮单击移动到下一个文本框