【发布时间】:2019-10-02 06:09:37
【问题描述】:
我正在制作一个程序,该程序将用户的学生姓名和成绩收集到向量中,并使用这些向量来计算平均值。当用户键入“完成”时,while 循环应该中断并继续执行下一段代码。但是,我制作的 while 循环不会中断。有没有更有效的方法来做到这一点?
我尝试创建一个 bool,当 bool 为真时会中断但仍然无法正常工作。
while (name != "done") {
cout << "Enter name and grade: ";
cin >> name;
if (!(cin >> score)) {
cin.clear;
cin.ignore(256, '\n');
cout << "Re-enter grade: ";
cin >> score;
}
else {
studentName.push_back(name);
studentScore.push_back(score);
}
}
while 循环应该在输入“done”时退出,但它会创建一个换行符并且不输出任何内容。
【问题讨论】:
-
欢迎来到 StackOverflow。您是否尝试过使用调试器单步执行代码并检查变量以确切了解循环不退出的原因?使用调试器是任何程序员都必须具备的基本技能。 StackOverflow 不是调试服务。
-
name 变量是如何定义的?是
std::string吗?是char*吗?您不能将字符串或 char* 与!=或==进行比较。如果是std::string,则需要执行比较字符串函数(name.compare( "done")),如果是char*,则需要执行strcmp函数 -
使用条件名称 == “完成”的循环内部中断
-
您的代码无法编译,请提供minimal reproducible example
-
@SuperG280 实际上 std::string 提供了
==的重载(等等)来比较 szring-objects 和 cstrings
标签: c++