Konsollen utgang ikke vises riktig i Qt5

stemmer
0

Jeg skriver en brøkdel klasse for skoleoppgave og har problemer med å få konsollen melding til skjermen før inngangen. Den domstol linje skal vises før du leser innspill fra konsollen, men det bare dukker opp etter at jeg har allerede skrevet en inngang inn i konsollen. Jeg er ny på Qt, så jeg er ikke kjent med hvordan det fungerer under panseret.

Her er koden:

// 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();
    // ...
}

Dessuten er det en bedre måte jeg kan lese fraksjoner direkte fra konsollen som heltall? Jeg har det satt opp slik at du skriver i brøken er teller og nevner atskilt med et mellomrom, som deretter leses som en streng. Jeg har tenkt på å bryte strengen i to og kastet både tall til heltall.

Publisert på 13/02/2020 klokken 23:51
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Å ha tekst faktisk vist, må det spyles. Avhengig av detaljer, kan rødme automatisk bli gjort når en ny linje er skrevet, og selvsagt minst når søknaden skrive bufferen er full, og når filen er lukket. I søknaden din, ingen av disse skje. Så må du skylle coutmanuelt, ved hjelp av `QTextStream :: flush () .

"Er ikke de to bekker skille fra hverandre?" , Akkurat, de er. Dine to QTextStreamobjekter er fullstendig irrelevant, slik at du leser fra din cin har ingen måte å fortelle din cout til å spyle sine buffere. Relatert, oppmerksom på at iostreamsi tillegg til C stdio ting har spesiell mekanisme som forårsaker stdout til spyles når du leser fra stdin .

Om hvorfor QTextStreamikke tømme etter hver <<operasjon, som er å gjøre produksjonen mer effektiv. Flushing betyr et systemkall må gjøres, som er langsom (i forhold til bare å kopiere tekst fra ett sted til et annet i et program).

Irrelevant, jeg ville ikke navngi dine egne objekter cinog coutfordi det er bundet til å skape forvirring med std::cinog std::cout.

Svarte 14/02/2020 kl. 00:32
kilden bruker

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