Проблема со стандартным вводом-выводом СPP

В чем может быть проблема? Системная или все-таки с кодом? Вродебы ошибок в коде нет, но система не реагирует на нажатие "Enter" при вводе с помощью cin. Код написан в qt, система сборки qmake. Общий код - простейший:

#include <QCoreApplication>
#include <iostream>
#include <QDebug>
using namespace std;


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
  
    int matrix[100][100];
    int rows;
    int collumns;

    cout << "Cuantos rows queres: ";
    cin >> rows;
    cout << rows;
    return a.exec(); 
}

Ответы (1 шт):

Автор решения: maestro

Это не ответ на вопрос, но тем не менее я хочу объяснить, почему я дал такие советы в комментариях.

Что такое QCoreApplication? Это особый объект, который создаёт и запускает очередь событий - QEventLoop. Очередь событий нужна для обработки внутренних потребностей Qt, в том числе обслуживания механизма сигналов и слотов. Строка

return a.exec();

запускает очередь событий, и будет выполняться до тех пор, пока вы не вызовете a.quit(). То есть ваша программа не завершится никогда (нажатие крестика закрытия консоли - это аварийное завершение, фактически - убийство процесса).

Если ваша программа представляет собой линейный однопоточный алгоритм, то QEventLoop и, соответственно, QCoreApplication вам не нужны. В конце функции main можно написать return 0;.

Теперь про оператор вывода. При помещении данных в поток вывода cout эти данные буферизуются, и могут фактически появиться в устройстве вывода (консоли) не тогда, когда вы вызвали оператор <<. Буфер может сбрасываться при вызове метода cout.flush(), при помещении в поток объекта std::endl, при вызове деструктора потока (например, при завершении работы программы). При убийстве процесса буфер не сбрасывается. Поскольку ваша программа никогда не завершается, то и сброса буфера нет, следовательно, введённые данные не попадут обратно в вывод.

Теперь вы утверждаете, что вызов оператора >> для потока cin не завершается, и вы определили это по тому признаку, что после нажатия клавиши enter программа продолжает читать поток. Я думаю, это поведение какого-то нестандартного терминала, и советую вам попробовать запустить программу в чистой среде. Например, без использования среды разработки. Или в другой операционной системе. Если там будет всё хорошо, то искать проблему в вашем терминале.

→ Ссылка