Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么/何时自动刷新cout缓冲区?_C++_Buffer_Cout - Fatal编程技术网

C++ 为什么/何时自动刷新cout缓冲区?

C++ 为什么/何时自动刷新cout缓冲区?,c++,buffer,cout,C++,Buffer,Cout,我从中了解到,如果我在不刷新缓冲区的情况下输出字符(使用endl或cin),它们在程序结束之前不会出现在我的控制台上 所以我试着做一个无限循环: for(;;) { std::cout << "a" << std::endl; } (;;)的 { std::cout正确的说法是,std::endl或使用std::cin会导致刷新,并立即输出内容。std::endl相当于std::cout.put('\n');std::cout.flush()

我从中了解到,如果我在不刷新缓冲区的情况下输出字符(使用
endl
cin
),它们在程序结束之前不会出现在我的控制台上

所以我试着做一个无限循环:

for(;;)
{
    std::cout << "a" << std::endl;
}
(;;)的

{

std::cout正确的说法是,
std::endl
或使用
std::cin
会导致刷新,并立即输出内容。
std::endl
相当于
std::cout.put('\n');std::cout.flush();
,其中as
std::cin和
std::cerr
tie()
d到
std::cout
,因此对其中任何一个的任何操作都会为您执行
std::cout.flush()


但是,在第二种情况下,
std::cout
仍然有一个底层输出序列(一个
std::streambuf
),这是一个指定的大小。一旦此缓冲区已满,流将自动刷新,并将输出发送到控制台。填充此缓冲区就是您所看到的延迟时间。

您正确地认为
std::endl
,或使用
std::cin
,会导致刷新,并且内容将被删除立即输出。
std::endl
相当于
std::cout.put('\n');std::cout.flush();
,其中as
std::cin
std::cerr
tie()
d到
std::cout
,因此对其中任何一个的操作都会为您执行
std::cout.flush()


但是,在第二种情况下,
std::cout
仍然有一个底层输出序列(一个
std::streambuf
),它是指定的大小。一旦此缓冲区已满,流将自动刷新,并将输出发送到控制台。填充此缓冲区就是您所看到的延迟时间。

否,它会在刷新之前填充缓冲区。缓冲区的大小不是无限的。“它们不会出现在我的控制台上,直到程序结束”-或直到缓冲区满..不,它会在刷新之前填满缓冲区。缓冲区的大小不是无限的。“它们不会出现在我的控制台上,直到程序结束”-或直到缓冲区满。。
for(;;)
{
    std::cout << "a";
}