Выводит строку на консоль с функцией cout.write () только после того, как я выйду из приложения - PullRequest
0 голосов
/ 02 марта 2019

Вставка строки с помощью cin.getline () и печать этой строки на консоли с помощью cout.write (). Печать введенной строки после того, как я выйду из приложения

#include<iostream.h>
#include<conio.h>
int main() {
char str[20];
cout<<"Enter a string:";
cin.getline(str,20);
cout<<"Entered string:";
cout.write(str,20);
cout.flush();
getch();
return 0;
}

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

std::ostream реализации типа std::cout обычно работают с буферизацией.Это означает, что реализация std::ostream собирает то, что было передано с вызовами write() в буфере, и только если буфер исчерпан, фактическое содержимое будет отправлено на физическое устройство (терминал или файл, обнаруженный в хранилище).

Чтобы запустить поток, записывающий содержимое буфера в терминал или файл, вам необходимо явно вызвать std::ostream::flush() (обратите внимание, что манипулятор ввода-вывода std::endl делает это неявно).

0 голосов
/ 02 марта 2019

Вывод в потоки обычно буферизован .Если буфер не очищен (что происходит, когда вы заполняете буфер полностью или явно flush it), то вывод фактически не будет записан.

Потоковый буфер также очищается, когдаПотоковый объект закрыт, что происходит, когда std::cout уничтожается как часть завершения программы.Вот почему вы видите вывод при выходе из программы.

Итак, решение простое: явно очищайте буфер (используя, например, std::cout.flush();) после каждой записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...