QString变量在使用QT Creator从键盘输入的双变量后跳过

QString variable input skipped after double variable entered from keyboard with Qt Creator

本文关键字:变量 输入 键盘 QT Creator QString      更新时间:2023-10-16

我正在尝试从键盘输入QStrings和Double/Floats,但是从键盘输入双变量后,程序将跳过下一个QString输入。有什么问题?

我的程序:

#include <QCoreApplication>
#include <QTextStream>
QTextStream cout(stdout);
QTextStream cin(stdin);

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString name, supplier;
    float price;
    char answer;
    cout << "Enter product name: ";
    cout.flush();
    name = cin.readLine();
    cout << "Enter product price: ";
    cout.flush();
    cin >> price;
    cout << "Enter product supplier: ";
    cout.flush();
    supplier = cin.readLine();
    cout << "Is the supplier the manufacturer? (Y/N): ";
    cout.flush();
    cin >> answer;
    cout << name << "-" << price << "-" << supplier << "-" << answer <<endl;
    return a.exec();
}

,如果我以QSTRING输入价格,我可以使该程序可以工作,然后将其转换为双重,但感觉有些多余?

我输入双变量后为什么会跳过供应商输入?

cin >> price;之后您需要另一个cin.readLine();,因为阅读float直到行结束之前才读取:

[...]
cout << "Enter product price: ";
cout.flush();
cin >> price;
cin.readLine();
[...]