Мне было интересно, как правильно * буферизовать 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);