【发布时间】:2021-12-22 09:50:48
【问题描述】:
我制作了一个程序,要求提供学生信息(姓名、课程和年级),它被配置为在课程或学生的输入名称为stop时中断
这是我的代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> v;
string name;
string course;
string grade;
while (name != "stop") {
cout << "Please type a student name: ";
getline(cin, name);
if (name != "stop") {
v.push_back(name);
}
while (course != "stop") {
cout << "Please type a course name: ";
getline(cin, course);
if (course != "stop") {
v.push_back(course);
}
if(course != "stop" == 0){
break;
}
else {
cout << "Please type the grade: ";
getline(cin, grade);
v.push_back(grade);
}
}
}
//for (auto iter = v.begin(); iter != std::prev(v.end()); ++iter){
// std::cout << *iter << std::endl;
//}
return 0;
}
我希望程序在第一个学生课程被称为“停止”时询问新学生,但这只是意味着每当输入新学生姓名时,“课程”的 while 循环会保持“中断”,因为最后输入的课程是“停止”。
关于如何解决这个问题的任何想法?
对不起,如果问题阐述得不好,如果您需要更多说明,请告诉我!
谢谢:)
【问题讨论】:
-
您必须在 while 循环之后重置
course以保持您的 while 循环不变。 https://en.cppreference.com/w/cpp/string/basic_string/clear -
附注:
if(course != "stop" == 0)应该是if(course == "stop")。我建议使用do..while循环来消除冗余字符串检查。您应该检查getline()是否失败,例如,以防用户键入 Ctrl-C。 -
好点了..虽然您不需要重置,因为用户输入是在检查之前进行的。
-
我的clean up。
-
为此,您应该提出一个全新的问题并展示您尝试的解决方案。
标签: c++ string if-statement vector while-loop