Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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++ c++;_C++ - Fatal编程技术网

C++ c++;

C++ c++;,c++,C++,我是新来的C++学习C++Primer一书。在第一章中,作者讨论了iostream、cout和endl的缓冲区。我不能很好地理解。这里有两个示例代码 #include<iostream> int v1; int main() { std::cout<<"First Cout!"; std::cin>>v1; std::cout<<"Second Cout!"<<std::endl; std::cout&

我是新来的
C++
学习
C++Primer
一书。在第一章中,作者讨论了
iostream
cout
endl
的缓冲区。我不能很好地理解。这里有两个示例代码

#include<iostream>
int v1;
int main()
{

    std::cout<<"First Cout!";
    std::cin>>v1;
    std::cout<<"Second Cout!"<<std::endl;
    std::cout<<"Third Cout!\n";

    return 0;
}
#包括
int v1;
int main()
{
std::coutv1;

std::coutstd::endl只是将EOL(行尾)符号添加到输出中。通常是它的\n,但它可以随操作系统的不同而变化。

std::endl只是将EOL(行尾)符号添加到输出中。通常是它的\n,但它可以随操作系统的不同而变化。

std::endl只是添加EOL(行尾)符号到输出。通常是它的\n,但它可以随操作系统的不同而变化。

std::endl只是将EOL(行尾)符号添加到输出中。通常是它的\n,但它可以随操作系统的不同而变化。

在第一行之后,输出在缓冲区中,因此您不会在终端中看到它

在第二行之后,
endl
会刷新缓冲区,因此您现在可以在终端输出中看到第1行和第2行

在第三行之后,输出在缓冲区中,在程序退出之前,您不会在终端中看到它

编辑:

当您在第1行和第2行之间放置cin时,会导致cout被冲洗。请参阅:

cin绑定到标准输出流cout(请参阅ios::tie),这表示在cin上执行每个i/o操作之前,cout的缓冲区都被刷新(请参阅ostream::flush)


在第一行之后,输出在缓冲区中,所以在终端中看不到它

在第二行之后,
endl
会刷新缓冲区,因此您现在可以在终端输出中看到第1行和第2行

在第三行之后,输出在缓冲区中,在程序退出之前,您不会在终端中看到它

编辑:

当您在第1行和第2行之间放置cin时,会导致cout被冲洗。请参阅:

cin绑定到标准输出流cout(请参阅ios::tie),这表示在cin上执行每个i/o操作之前,cout的缓冲区都被刷新(请参阅ostream::flush)


在第一行之后,输出在缓冲区中,所以在终端中看不到它

在第二行之后,
endl
会刷新缓冲区,因此您现在可以在终端输出中看到第1行和第2行

在第三行之后,输出在缓冲区中,在程序退出之前,您不会在终端中看到它

编辑:

当您在第1行和第2行之间放置cin时,会导致cout被冲洗。请参阅:

cin绑定到标准输出流cout(请参阅ios::tie),这表示在cin上执行每个i/o操作之前,cout的缓冲区都被刷新(请参阅ostream::flush)


在第一行之后,输出在缓冲区中,所以在终端中看不到它

在第二行之后,
endl
会刷新缓冲区,因此您现在可以在终端输出中看到第1行和第2行

在第三行之后,输出在缓冲区中,在程序退出之前,您不会在终端中看到它

编辑:

当您在第1行和第2行之间放置cin时,会导致cout被冲洗。请参阅:

cin绑定到标准输出流cout(请参阅ios::tie),这表示在cin上执行每个i/o操作之前,cout的缓冲区都被刷新(请参阅ostream::flush)


在第1行之后,cout只包含给定的字符串,没有换行符。 在第二行之后,cout还包含一行结尾,文本显示在控制台窗口中。 在第三行之后,cout包含另一个字符串,其中包括行尾,不一定出现在控制台窗口中。
退出main后,将显示第3行的文本。

在第1行之后,cout只包含给定的字符串,没有换行符。 在第二行之后,cout还包含一行结尾,文本显示在控制台窗口中。 在第三行之后,cout包含另一个字符串,其中包括行尾,不一定出现在控制台窗口中。
退出main后,将显示第3行的文本。

在第1行之后,cout只包含给定的字符串,没有换行符。 在第二行之后,cout还包含一行结尾,文本显示在控制台窗口中。 在第三行之后,cout包含另一个字符串,其中包括行尾,不一定出现在控制台窗口中。
退出main后,将显示第3行的文本。

在第1行之后,cout只包含给定的字符串,没有换行符。 在第二行之后,cout还包含一行结尾,文本显示在控制台窗口中。 在第三行之后,cout包含另一个字符串,其中包括行尾,不一定出现在控制台窗口中。
退出main后,将显示第三行的文本。

流包含内存缓冲区,在将数据刷新到最终目的地(在本例中为输出控制台)之前,将在其中写入数据,因为刷新可能是一项昂贵的操作

在某些情况下,缓冲区可能会自动刷新:当流关闭时,或者如果有大量缓冲数据,或者如果流配置为在每行之后刷新,如
std::cerr
所示

有时您需要手动刷新,例如,以确保用户看到您写入的内容。
std::cout
。这可以通过两种方式完成:

  • 在流上调用
    flush()
    成员函数
  • std::flush
    操纵器流式处理到流中
std::endl
操纵器执行两项操作:


  • 插入一个新行字符(或字符序列),相当于
    流包含一个内存缓冲区,数据在刷新到最终目标(在本例中为输出控制台)之前写入该缓冲区,因为刷新可能是一个昂贵的操作

    b