📄 一句话概括
输入输出(I/O)=程序与外界交换数据。C++ 的做法是把它想象成"水流":键盘的数据流进程序(cin >>),程序的结果流到屏幕(cout <<),错误信息另有通道(cerr)。两个运算符的方向就是数据流向:>> 把数据"抽"进变量,<< 把数据"推"出去。本章三小节:控制台屏幕(2.5.1)、流(2.5.2)、格式控制(2.5.3)。
一、为什么叫"流"
流(stream) 的比喻:数据像一条河里的水,从一端流到另一端,你只管"往河里放"或"从河里取",不用管中间怎么搬。
键盘 ──(cin)──▶ 你的程序 ──(cout)──▶ 屏幕
│
└──(cerr)──▶ 屏幕(错误信息)
为什么不用"函数"的思路(C 语言的 printf/scanf)?因为流有两个好处:
| 好处 | 说明 |
|---|---|
| 类型安全 | 你 cout << n,它自己知道 n 是什么类型;不用像 printf 那样手写 %d、%f |
| 可扩展 | 你自己定义的类型(第 8 章的结构体/类)也能用 << 输出 |
二、两个运算符的方向
cin >> a; // 数据从 cin 流进变量 a —— 箭头指向【变量】
cout << "Hello"; // 数据从程序流到屏幕 —— 箭头指向【屏幕】
记忆法:
>>看起来像"把东西吸进去",吸进哪?吸进右边的变量<<看起来像"把东西推出去",推给谁?推给右边的屏幕
可以接龙:
cin >> a >> b; // 连续读两个
cout << "a = " << a << " b = " << b << endl; // 连续输出多段
三、I/O 的标准套路
任何"要用户输入"的程序,都是这四步:
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "请输入两个整数(用空格分开):"; // ① 提示:说清要输什么
cin >> a >> b; // ② 输入:读进来
cout << "它们的和是:" << a + b << endl; // ③ 处理 + 输出
return 0;
}
四步的关键细节:
| 步骤 | 要点 |
|---|---|
| ① 提示 | 一定要有!否则用户盯着黑窗口不知道要干嘛 |
| ② 输入 | 多个值用空格或回车分开都行(后面 2.5.2 讲原因) |
| ③ 输出 | 加 endl 换行;不加就都挤在一行 |
| ④ 结束 | 别忘 return 0;(2.1.6) |
四、本篇三小节的路线图
| 小节 | 讲什么 | 你会知道 |
|---|---|---|
| 2.5.1 控制台屏幕 | "黑窗口"是什么 | 标准输入/输出/错误三个通道,重定向 |
| 2.5.2 C++ 语言中的流 | 流的机制 | cin/cout 怎么工作、为什么能自动识别类型 |
| 2.5.3 流输出格式控制 | 排版 | 保留几位小数、对齐、十六进制显示;外加 printf 的用法 |
五、动手 Demo:第一个"有交互"的程序
新建 io.cpp:
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "请输入两个整数(用空格分开):";
cin >> a >> b;
cout << "你输入的是:" << a << " 和 " << b << endl;
cout << "和 = " << a + b << endl;
cout << "差 = " << a - b << endl;
cout << "积 = " << a * b << endl;
return 0;
}
看到什么算成功:运行后窗口停在"请输入两个整数",你敲 7 3 回车,它输出和、差、积。
顺手试两个"奇怪"输入:
- 输入
7回车3回车 → 照样能跑(空格和回车都算"分隔") - 输入
7 abc→ 后面的读取会失败,b拿到不确定的值(这就是"输入校验"为什么重要,第 4 章之后会处理)
30 秒实验:把 cout << "请输入两个整数(用空格分开):"; 这一行删掉再运行——程序照样能跑,但你不知道要输入什么。提示语不是装饰,是体验的一部分。
六、常见误区
- "
>>和<<记不清方向"——记住一句话:数据从 cin 流向变量(>>指向变量);数据从值流向 cout(<<指向 cout)。箭头永远指向"数据要去的地方" - "
cin可以读任意格式的输入"——按目标变量的类型解析:读int时遇到字母就失败。输入校验是必须的(第 4 章) - "输出不加
endl也一样"——不换行,所有输出会挤在同一行。大多数时候你要加endl - "输入提示可有可无"——对程序运行没影响,对使用者影响巨大。写给自己用的小工具也要提示
自测三问(点开对答案)
1. `>>` 和 `<<` 分别用在哪、方向是什么?——`cin >> 变量`(数据抽进变量)、`cout << 值`(数据推到屏幕)。 2. 有交互的程序,标准四步是什么?——**提示 → 输入 → 处理 → 输出**(外加最后的 `return 0`)。 3. 为什么 C++ 用"流"而不是 C 的 `printf`?——**类型安全**(不用手写格式符)且**可扩展**(自定义类型也能 `<<`)。- ☑ 控制台屏幕
相关笔记
- iostream 标准库 —— 四个标准流对象
- C++语言中的流 —— 流的机制
- 数据类型 —— 输入输出的类型规则