salida de la consola no se muestran correctamente en QT5

votos
0

Estoy escribiendo una clase de fracciones para esta asignación escolar y estoy teniendo problemas para hacer llegar el mensaje a la consola de visualización antes de la entrada. La línea cout debe mostrar antes de leer la entrada de la consola, sin embargo, sólo aparece después de que ya ha escrito una entrada en la consola. Soy nuevo en Qt, así que no estoy familiarizado con la forma en que funciona bajo el capó.

Aquí está el código:

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

Además, hay una mejor manera de que pueda leer las fracciones directamente desde la consola como enteros? Lo tengo configurado para que se escribe en el numerador de la fracción y el denominador separadas por un espacio, que se lee a continuación, en forma de cadena. Mi plan es romper la cadena por la mitad y fundición ambos números en enteros.

Publicado el 13/02/2020 a las 23:51
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Para que el texto se muestra en realidad, tiene que ser eliminados. Dependiendo de los detalles, de enjuague se puede hacer automáticamente cuando una nueva línea está escrito, y, obviamente, al menos cuando el tampón de aplicación de escritura está llena, y cuando se cierra el archivo. En su aplicación, ninguna de estas suceda. Por lo que debe limpiar su coutmanualmente, usando `QTextStream :: flush () .

"¿No son las dos corrientes separadas una de la otra?" , Exactamente, lo son. Sus dos QTextStreamobjetos tienen ninguna relación, por lo que la lectura de su cin no tiene forma de saber su cout vaciar sus buffers. Relacionados, cabe destacar que iostreamsal igual que C stdio cosas ha mecanismo especial que causa la salida estándar se vuelquen cuando se lee de la entrada estándar .

En cuanto a por qué QTextStreamno descarga después de cada <<operación, que de hacer más eficiente la producción. Mediante una llamada al sistema que hay que conseguir, que son lentos (en comparación con sólo copiar texto de un lugar a otro dentro de una aplicación) rubor.

Sin relación, no me nombre a sus propios objetos ciny cout, ya que está destinado a causar confusión con std::ciny std::cout.

Respondida el 14/02/2020 a las 00:32
fuente por usuario

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