endl在C++中的意义(c++中的endl什么意思)

为什么要使用endl

一、输出流与缓冲区

在C++中,输出流是一个抽象的概念,一般用于向输出设备(例如屏幕或者文件)输出数据。与之对应的,C++也提供了输入流用于向程序中输入数据。在输出流向输出设备输出数据的过程中,由于输出设备的限制,数据往往需要在内存中保存。而在内存中保存这些数据的区域叫缓冲区。是缓冲区的概念定义出了endl的含义。

二、endl的含义

endl是一个重载的操作符,它的两个作用:

1、输出一个’n’,使得输出的内容向下一行移动。

2、刷新输出缓冲区,并且将缓冲区中的所有内容输出到设备中。

三、为什么要刷新缓冲区?

在C++中,缓冲区的刷新是由系统自动完成的。但是,在以下两种情况下,需要使用手动刷新缓冲区。

1、程序需要立即把缓冲区的内容输出到设备中(例如,程序突然崩溃需要把已经输出的内容全部保存)。

2、缓冲区的内容达到一定大小,需要清空缓冲区。

四、endl的使用示例

示例1

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World!" << endl;
    return 0;
}

执行这个程序,会输出字符串“Hello World!”,然后换行,最后刷新缓冲区。这个程序里,endl实际上起到了换行的作用。另外,由于程序结束时缓冲区被自动刷新,所以我们看到了打印的效果。如果我们没有使用endl,程序不会刷新缓冲区,打印的内容就会停留在缓冲区里面。

示例2

#include <iostream>

using namespace std;

int main() {
     cout << "Hello ";
     cout << "World!";
     cout << endl;
     return 0;
}

这个程序输出的效果与示例1是一样的。注意到,虽然print语句输出的两个部分中间没有任何操作符,但是打印的效果却不会有问题。这是因为在两次输出之间有缓冲区,程序会自动把两个部分连接起来。但是,如果我们想要把两个部分分别在两行打印,我们就需要像示例1中一样,使用endl去刷新缓冲区。

示例3

#include <iostream>

using namespace std;

int main() {
     int i = 10;
     cout << "The value of i is " << i;
     i = 20;
     cout << " and now it is " << i << endl;
     return 0;
}

这个程序输出的内容是:“The value of i is 10 and now it is 20。”特别注意到,我们在输出i的值时,间隔符是字符串“and now it is ”,而不是endl。由于两个部分输出到同一个缓冲区里,程序自动把它们连接成一个字符串。最后,我们使用endl换行刷新输出缓冲区。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平