Вставка строки с помощью 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;
}
@πάντα ῥεῖ работает, но также печатает «<» после строки. Я использую Turbo C++ для практики.
Взгляните на: stackoverflow.com/questions/213907/c-stdendl-vs-n
@AyushiSharma Я более подробно объясняю поведение в ответе, который я написал.
@AyushiSharma Кстати, <iostream.h> и <conio.h> не являются стандартными заголовками C++. Вы, вероятно, используете компилятор turbo-C++, который уже устарел в конце прошлого тысячелетия. Подумайте об использовании более современного компилятора для изучения С++.
@AyushiSharma не редактируйте ответы людей на свой вопрос, это означает, что ваш код теперь не демонстрирует проблему, указанную в вашем вопросе, что немного сбивает с толку.





Вывод в потоки обычно буферизованный. Если буфер не сброшен (что происходит, когда вы полностью заполняете буфер или явно румянец), то вывод фактически не будет записан.
Буфер потока также очищается, когда объект потока закрывается, что происходит, когда std::cout уничтожается как часть завершения программы. Вот почему вы видите вывод, когда программа выходит.
Таким образом, решение простое: явно сбрасывать буфер (используя, например, std::cout.flush();) после каждой записи.
std::ostreamреализации типа std::cout обычно работают в буфере. Это означает, что реализация std::ostream собирает то, что передается при вызовах write(), в буфер, и только если буфер исчерпан, фактическое содержимое будет отправлено на физическое устройство (терминал или файл, проявленный в хранилище).
Чтобы запустить поток, записывающий содержимое буфера в терминал или в файл, вы должны явно вызвать std::ostream::flush() (обратите внимание, что std::endl манипулятор ввода-вывода делает это неявно).
Поставьте
cout.flush();послеcout.write(str,20);