Konsolenausgabe nicht richtig angezeigt in QT5

stimmen
0

Ich bin ein Bruchklasse für diese Schulaufgabe zu schreiben und Mühe habe immer die Konsole Nachricht vor der Eingabe angezeigt werden soll. Die cout Linie sollte vor dem Lesen der Eingabe von der Konsole angezeigt werden, jedoch nur zeigt sich, nachdem ich bereits eine Eingabe in den Computer eingegeben. Ich bin neu in Qt, also bin ich nicht vertraut mit, wie es unter der Haube arbeitet.

Hier ist der Code:

// one of the requrements is we have to use Qt instead of the standard iostream
int main(void) {
    QTextStream cout(stdout);
    QTextStream cin(stdin);

    Fraction f1, f2, add, sub, mul, div;
    QString line;

    cout << Enter the numerator and denominator of fraction 1: ;
    line = cin.readLine();
    // ...
}

Außerdem gibt es eine bessere Art, wie ich die Fraktionen direkt von der Konsole als ganze Zahlen lesen kann? Ich habe es so einrichten, dass Sie in der Fraktion der Zähler ein und Nenner durch ein Leerzeichen getrennt, die dann in als String gelesen wird. Ich plane, die Zeichenfolge in der Hälfte auf Bruch und beiden Zahlen auf ganze Zahlen zu werfen.

Veröffentlicht am 13/02/2020 um 23:51
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Um einen Text tatsächlich gezeigt, muss sie gespült werden. Je nach Details, Spülung automatisch durchgeführt werden kann , wenn ein Newline geschrieben wird, und offensichtlich zumindest , wenn die Anwendung Schreibpuffer voll ist , und wenn die Datei geschlossen wird. In Ihrer Anwendung keine von diesen passieren. So können Sie Ihre spülen müssen coutmanuell, mit `QTextStream :: flush () .

„Sind nicht die beiden Ströme voneinander zu trennen?“ , Genau, sie sind. Ihre zwei QTextStreamObjekte sind völlig unabhängig, so dass Sie das Lesen von Ihrem cin hat keine Möglichkeit zu sagen , Ihre cout seine Puffer zu spülen. Verwandte, beachten Sie, dass iostreamsauch C stdio Zeug hat spezielle Mechanismus verursacht stdout gespült werden beim Lesen stdin .

Wie, warum QTextStreamnach jedem nicht bündig tut <<Betrieb, dass der Ausgang effizienter zu machen. Spüleinrichtung ein Systemaufruf gemacht werden muss, die langsam sind ( im Vergleich zu nur Kopieren von Text , von einem Ort zu einem anderen innerhalb einer Anwendung).

In keinem Zusammenhang, würde ich nennen Sie Ihre eigenen Objekte nicht cinund cout, weil es Verwirrung stiften mit gebunden ist , std::cinund std::cout.

Beantwortet am 14/02/2020 um 00:32
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more