循环中的字符串输入。第一个输入效果很好,而在其他输入上它会跳过

时间:2013-11-15 10:06:55

标签: c++

我需要为家庭作业编写一些程序,但我对字符串输入有一些问题。

问题是我不能做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:

正如你所看到的那样,第一个输入工作正常,然后只是啜饮留空空间。

我该如何纠正?感谢

1 个答案:

答案 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;
}