C++ 输出(cout)

在编写 C++ 程序时,如果我们想要把一段文字、变量的值或者算式的计算结果显示到屏幕上,最常用的方式就是使用 std::cout。其中,cout 是英文 “character output(字符输出)” 的缩写。

想要在程序中使用 std::cout,必须先在代码开头写上 #include <iostream> 来引入标准输入输出头文件。代码里的 std 是标准库的命名空间,双冒号 :: 表示去 std 里面找到 cout 这个输出工具。

std::cout 基本输出

在 C++ 中,使用 std::cout 配合双尖括号 <<,就可以把数据打印到控制台屏幕上。

语法:

std::cout << 输出内容;

说明:

std::cout 表示标准输出,默认对应的就是电脑屏幕上的控制台窗口,而 << 叫做 “流插入运算符”。小伙伴们不用死记这个专业名称,顺着箭头的方向看就很好理解:<< 像一个向左指的箭头,意思就是把右边的内容顺着箭头输送给左边的 std::cout 显示出来。

示例 1:输出一段文字

#include <iostream>

int main() {
    std::cout << "欢迎来到绿叶网!";
    return 0;
}

运行结果如下。

欢迎来到绿叶网!

分析:

"欢迎来到绿叶网!" 是一个字符串字面量,std::cout 会把双引号里面的文字原样打印到屏幕上。需要注意的是,代码里的英文双引号只是用来告诉编译器这是一段字符串,最终显示在屏幕上的结果并不会包含最外层的两个双引号。

除了输出固定文字之外,std::cout 还可以直接输出变量的值或算术表达式的计算结果。下面我们来看一个例子。

示例 2:输出变量与表达式

#include <iostream>

int main() {
    int pages = 120;
    std::cout << pages << '\n';
    std::cout << 10 + 20;
    return 0;
}

运行结果如下。

120
30

分析:

第一条输出语句读取了整型变量 pages 的值 120 并打印出来,末尾的 '\n' 是上一节学过的转义字符,写成 "\n" 也能同样起到换行的作用。第二条语句 std::cout << 10 + 20; 则会先算出 10 + 20 的结果 30,再把 30 打印到屏幕上。

初学的小伙伴在输出变量时,很容易在变量名外面误加上双引号。下面这种写法虽然不会报错,但编译器会把 "pages" 当成普通字符串,直接在屏幕上原样打印出字母 pages,而不是变量保存的数值 120:

int pages = 120;
std::cout << "pages";    // 原样输出字母 pages

连续输出多项内容

在实际开发中,我们经常需要把提示文字、变量的值或者多个不同类型的数据组合在同一行输出。此时可以在一条 std::cout 语句中连续使用多个 <<。

语法:

std::cout << 内容1 << 内容2 << 内容3;

说明:

当一条语句中包含多个 << 时,std::cout 会按照从左到右的顺序,把每一项内容依次紧挨着输出到屏幕上。

示例 3:拼接文字与变量

#include <iostream>

int main() {
    int year = 2026;
    std::cout << "Year: " << year;
    return 0;
}

运行结果如下。

Year: 2026

分析:

程序按从左到右的顺序依次执行:先输出字符串 "Year: ",再紧跟在后面输出变量 year 的值 2026,从而把提示文字和变量值拼在同一行显示。

需要注意的是,std::cout 在连续输出多项内容时,中间不会自动添加空格。上面代码之所以能显示出 Year: 2026,是因为我们在字符串 "Year: " 的冒号后面主动留了一个空格。如果写成 "Year:",输出结果就会紧贴在一起变成 Year:2026。

示例 4:输出多种类型的数据

#include <iostream>

int main() {
    int count = 5;
    double price = 19.8;
    char level = 'A';
    bool isPassed = true;

    std::cout << count << ' ' << price << ' ' << level << ' ' << isPassed;
    return 0;
}

运行结果如下。

5 19.8 A 1

分析:

在这个例子中,std::cout 自动识别了 int、double、char、bool 等不同的数据类型,不需要像 C 语言 printf() 那样手动填写格式符,直接通过 << 串联就能依次输出。其中,布尔值 true 默认会打印为数字 1。

由于多项内容之间不会自动留间隔,我们在相邻变量中间插入了空格字符 ' ',当然写成双引号字符串 " " 也可以。如果希望进一步控制小数保留位数或列对齐宽度,可以配合输出格式化工具来实现。

提示 如果希望 std::cout 直接把布尔值打印成英文单词 true 和 false,而不是默认的数字 1 和 0,可以在输出前加上一句 std::cout << std::boolalpha;。这里简单了解一下即可。

输出换行:\n 与 std::endl

std::cout 在输出完内容后,默认不会自动换行。哪怕我们在代码里分成两行写两条 std::cout 语句,只要没有明确输出换行,屏幕上的文字依然会紧贴在同一行显示。

在 C++ 中,想要让输出结果换行,常用的有 2 种方式:一种是使用 \n,另一种是使用 std::endl。

1. 使用 \n 换行(推荐)

在日常开发中,最简单直接的换行方式就是使用转义字符 \n。如果是在一段文字末尾换行,直接把 \n 写进双引号字符串里即可。如果是在变量后面单独追加换行,既可以写成单引号字符 '\n',也可以写成双引号字符串 "\n"。

示例 5:使用 \n 实现换行

#include <iostream>

int main() {
    int year = 2026;
    std::cout << "欢迎来到绿叶网!\n";
    std::cout << "Year: " << year << '\n';
    std::cout << "开始学习 C++";
    return 0;
}

运行结果如下。

欢迎来到绿叶网!
Year: 2026
开始学习 C++

分析:

每当 std::cout 遇到 \n 时,光标就会移到下一行的开头,后面的内容自然从新的一行开始显示。对于这个例子来说,如果把第一句末尾的 \n 去掉,前两条语句的输出就会首尾紧贴在同一行,变成 欢迎来到绿叶网!Year: 2026。

在变量后面单独追加换行时,写 '\n' 和 "\n" 的显示效果完全相同。不过 '\n' 是单个字符,处理起来更轻量,因此在变量末尾单独追加换行时,我们更推荐写单引号的 '\n'。如果换行本来就跟在文字末尾,直接把 \n 写进双引号字符串里最省事。

2. 使用 std::endl 换行

除了 \n 之外,我们在阅读其他 C++ 代码或教材时,也经常会看到使用 std::endl 来换行。其中,endl 是英文 “end line(结束当前行)” 的缩写。

需要注意的是,std::endl 是 C++ 标准库提供的一个换行控制工具,并不是普通的字符或字符串,因此使用时外面不能加单引号或双引号,直接写在 << 后面即可。

示例 6:使用 std::endl 实现换行

#include <iostream>

int main() {
    std::cout << "First line" << std::endl;
    std::cout << "Second line" << std::endl;
    return 0;
}

运行结果如下。

First line
Second line

分析:

从运行结果可以看出,std::endl 和 \n 都能让光标移到下一行开头。不过它们在底层的执行动作有以下区别:

  • \n:只负责让输出换到下一行,执行效率更高。
  • std::endl:除了让输出换行之外,还会强制刷新 “输出缓冲区”,也就是把内存中临时暂存的内容立即推送到屏幕上,频繁调用会降低输出速度。

在实际开发中,如果只是需要普通的换行,我们优先使用 \n 就可以了。同时小伙伴们要注意,千万不要把 \n 和 std::endl 的引号规则搞混:

// 正确方式
std::cout << "Hello\n";
std::cout << "Hello" << '\n';
std::cout << "Hello" << std::endl;

// 错误方式
std::cout << "std::endl";

上面错误方式中给 std::endl 加上了双引号,编译器会把它当成普通字符串,直接在屏幕上原样打印出 std::endl 这几个字符,而不会换行。

上一篇:

下一篇:

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号