我需要为家庭作业编写一些程序,但我对字符串输入有一些问题。
问题是我不能做2> =输入,它只是跳过它。我不知道为什么。我希望有人可以侮辱我。
我的代码:
for (int f1=0; f1<5; f1++) {
temp_st = new Schulernoten();
cout << "Name eingabe: ";
name = "\n";
getline(cin, name);
temp_st->set_name(name);
// note for informatik
cout << endl << "Note Informatik eingabe: ";
cin >> note;
while (temp_st->check_note(note)) {
cout << "Falsch eingabe: ";
cin >> note;
}
temp_st->set_note_inf(note);
// note for math
cout << endl << "Note Math eingabe: ";
cin >> note;
while (temp_st->check_note(note)) {
cout << "Falsch eingabe: ";
cin >> note;
}
temp_st->set_note_mat(note);
// ausdrucken
cout << temp_st->get_name() << endl << temp_st->get_note_inf() << endl << temp_st->get_note_mat() << endl << endl;
}
我的输出示例:
Name eingabe: Depeche Soul
Note Informatik eingabe: 1
Note Math eingabe: 1
Depeche Soul
1
1
Name eingabe:
Note Informatik eingabe: 2
Note Math eingabe: 1
2
1
Name eingabe:
Note Informatik eingabe:
正如你所看到的那样,第一个输入工作正常,然后只是啜饮留空空间。
我该如何纠正?感谢
答案 0 :(得分:0)
好的,我明白了。我忘了冲洗cin&gt;&gt;的。
这是更正后的代码:
for (int f1=0; f1<5; f1++) {
temp_st = new Schulernoten();
cout << "Name eingabe: ";
name = "\n";
getline(cin, name);
temp_st->set_name(name);
// note for informatik
cout << endl << "Note Informatik eingabe: ";
cin >> note;
cin.ignore();
while (temp_st->check_note(note)) {
cout << "Falsch eingabe: ";
cin >> note;
cin.ignore();
}
temp_st->set_note_inf(note);
// note for math
cout << endl << "Note Math eingabe: ";
cin >> note;
cin.ignore();
while (temp_st->check_note(note)) {
cout << "Falsch eingabe: ";
cin >> note;
cin.ignore();
}
temp_st->set_note_mat(note);
// ausdrucken
cout << temp_st->get_name() << endl << temp_st->get_note_inf() << endl << temp_st->get_note_mat() << endl << endl;
}