es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En Qt6 cin/getline no lee ninguna entrada para mí.

Estoy empezando con QT6 (y con QT en general).

He intentado hacer operaciones simples con cin/cout y ya es problemático.
De alguna manera, cin no lee una línea, ni tampoco getline.

Aquí está mi código:

#include <qcoreapplication>
#include <iostream>
#include <string>

using namespace std;

void do_something()
{
    string name = "";
    cout << "Ingresa tu nombre: \n";
    cin >> name;
    cout << "Hola " << name << "\n";
    return;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    do_something();
    return a.exec();
}

La línea “Ingresa tu nombre:” se imprime, ¡pero el carácter de nueva línea no!?
Luego, lo que sea que escriba en la consola no hace nada en cin, y el programa parece estar atascado en cin.

Si en lugar de “\n” uso “endl” para el “\n” en el segundo cout, ocurre lo siguiente.
Cin es completamente ignorado y también se imprime “Hola”.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c++, qt, newline, cin y qt6, a continuación te presento algunas sugerencias para el problema que estás enfrentando:

    1. Agrega la línea cin.ignore() antes de cin >> name. Esto ignorará cualquier carácter de nueva línea anterior en el flujo de entrada.
    2. Utiliza getline(cin, name) en lugar de cin >> name. Esto leerá toda la línea en lugar de solo una palabra.

    Aquí tienes el código modificado:

    #include <qcoreapplication>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    void hacer_algo()
    {
        string name = "";
        cout << "Ingresa tu nombre: \n";
        cin.ignore();
        getline(cin, name);
        cout << "Hola " << name << "\n";
        return;
    }
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        hacer_algo();
        return a.exec();
    }
    

    Intenta ejecutar este código y verifica si resuelve el problema que estás enfrentando. ¡Buena suerte con el aprendizaje de QT6!

Comments are closed.