不执行最后一个条目cin
,但执行第一个cin
条目并且程序请求数据。循环结束后,自然会重新开始,但这一次甚至没有进入第一个cin
。在调试器上,它显示最后一行被简单地忽略了。
int stopCreatingStudents = 0;
while (stopCreatingStudents != 1) {
Student* student = new Student();
std::string name;
cout << "Input a name of a student: ";
cin >> name;
student->setName(name);
newGroup.addStudent(student);
cout << "Stop to create students?(0 - No, 1 - Yes): ";
cin >> stopCreatingStudents;
}
输入数据:
读取字符串的代码:
那就是问题所在。
operator>>
只读取第一个单词。第二个单词保留在输入流中。然后尝试计算数字:因为 输入流中没有数字,则读取尝试以错误结束,输入流进入错误状态。所有后续的读取尝试都将被忽略。
要读取整个字符串,您可以使用
std::getline()
. 像这样的东西:输入:
结论: