Что такое Qt-эквивалент cin.ignore ()? - PullRequest
0 голосов
/ 14 апреля 2020

Мне было интересно, как правильно * буферизовать sh буфер в Qt при переходе между qin >> s1 и QString s2 = qin.readLine(). В настоящее время, когда я запускаю следующий код, он полностью пропускает второй ввод.

Я помню, что столкнулся с этой проблемой на простом C ++, и я считаю, что причина была в том, что cin >> s1 добавлял новую строку в входной буфер, который читается как допустимый вход, вызывая пропуск следующего ввода. Я смог решить эту проблему, вызвав cin.ignore() между этими двумя строками.

Кажется, я не могу найти никакой документации о том, как полностью заполнить буфер sh между этими двумя вызовами; Я потратил целый день, пытаясь решить эту проблему без удачи.

int main() {
    QTextStream qout (stdout);
    QTextStream qin (stdin);

    QString s1;
    qout << "Enter first input: ";
    qin >> s1;

    // call equivallent of cin.ignore() here

    qout << endl << "Enter second input: " << endl;
    QString s2 = qin.readLine();

    return 0;
}

Я пробовал следующие решения, вставленные там, где я обычно звонил бы cin.ignore():

qin >> s1 >> flush; // substituted for the line above
qin.flush();
fflush(stdin);
...