Чтобы текст действительно отображался, его необходимо очистить. В зависимости от деталей, сброс может выполняться автоматически при записи новой строки, и, очевидно, по крайней мере, когда буфер записи приложения заполнен, и когда файл закрыт. В вашем приложении ничего из этого не происходит. Поэтому вы должны вручную sh ваш cout
вручную, используя `QTextStream :: flu sh () .
" Разве два потока не отделены друг от друга? другие? ", именно они. Ваши два QTextStream
объекта совершенно не связаны, поэтому вы читаете из ваш cin
не может сказать ваш cout
гриппу sh его буферам. Обратите внимание, что iostreams
, а также C stdio имеет специальный механизм, вызывающий сброс stdout при чтении с stdin .
Относительно того, почему QTextStream
не вызывает гриппа sh после каждой операции <<
, это сделает вывод более эффективным. Сбрасывание означает, что системный вызов должен выполняться медленно (по сравнению с простым копированием текста из одного места в другое внутри приложения).
Вне зависимости, я бы не назвал ваши собственные объекты cin
и cout
, потому что это может вызвать путаницу с std::cin
и std::cout
.