仅在我退出应用程序后,使用Cout.write()函数在控制台上打印字符串

Prints string on console with cout.write() function only after I Quit the application

本文关键字:函数 控制台 字符串 打印 write Cout 退出 应用程序 使用      更新时间:2023-10-16

使用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;
}

流向流的输出通常为缓冲。除非缓冲区被冲洗液(当您完全填充缓冲区或明确冲洗时发生这种情况),则实际上不会写出输出。

当流对象关闭时,流缓冲区也被冲洗,当std::cout作为程序终止的一部分破坏时,这会发生。这就是为什么您会在程序退出时看到输出的原因。

因此,解决方案很简单:明确地冲洗缓冲区(例如std::cout.flush();),每次写入。

std::ostream通常会缓冲 std::cout等实现。这意味着std::ostream实现将收集带有缓冲区write()的电话传递的内容,并且只有在缓冲区耗尽时,实际内容才会发送到物理设备(终端或在存储中显示的文件)。

要触发将缓冲区内容写入终端或文件的流,您明确必须调用 std::ostream::flush()(请注意,std::endl I/O操纵器都隐含地执行此操作)。