目录
[一、标准流对象(最基础的 I/O 载体)](#一、标准流对象(最基础的 I/O 载体))
[1. 插入运算符 <<(用于输出)](#1. 插入运算符 <<(用于输出))
[2. 提取运算符 >>(用于输入)](#2. 提取运算符 >>(用于输入))
[三、流操纵符(控制 I/O 格式)](#三、流操纵符(控制 I/O 格式))
[四、流状态检查与控制(处理 I/O 错误)](#四、流状态检查与控制(处理 I/O 错误))
[五、字符 / 行输入输出函数(精细控制)](#五、字符 / 行输入输出函数(精细控制))
在 C++ 中,<iostream>
是处理标准输入输出(I/O)的核心头文件,它包含了用于控制台输入输出的基础类、对象和操作接口。以下是其中最常用的接口分类及具体说明:
一、标准流对象(最基础的 I/O 载体)
这些是预定义的全局对象,直接关联到系统的标准输入输出设备(如键盘、屏幕),是 I/O 操作的入口。
对象 | 含义 | 特性 | 常用场景 |
---|---|---|---|
cout |
标准输出流 | 有缓冲(输出可能延迟),默认关联屏幕 | 输出正常信息(如结果、提示) |
cin |
标准输入流 | 有缓冲(等待用户输入完成),默认关联键盘 | 读取用户输入(如数字、字符串) |
cerr |
标准错误输出流 | 无缓冲(即时输出),默认关联屏幕 | 输出错误信息(如程序异常) |
clog |
标准日志输出流 | 有缓冲,默认关联屏幕 | 输出日志信息(如运行状态) |
二、输入输出运算符(核心操作符)
<iostream>
重载了 >>
(提取运算符)和 <<
(插入运算符),用于便捷地读写数据,支持几乎所有基础数据类型(如 int
、double
、string
等)。
1. 插入运算符 <<
(用于输出)
-
作用:将右侧数据 "插入" 到左侧的输出流中(如
cout
)。 -
示例: cpp
运行
int a = 10; double b = 3.14; cout << "a = " << a << ", b = " << b << endl; // 输出:a = 10, b = 3.14
2. 提取运算符 >>
(用于输入)
-
作用:从左侧的输入流(如
cin
)中 "提取" 数据到右侧的变量中。 -
示例: cpp
运行
int x; string s; cin >> x >> s; // 读取一个整数和一个字符串(以空格/回车分隔)
三、流操纵符(控制 I/O 格式)
操纵符(manipulators)用于调整输入输出的格式(如换行、精度、宽度等),部分基础操纵符定义在 <iostream>
中(复杂的在 <iomanip>
中)。
操纵符 | 作用 | 示例 |
---|---|---|
endl |
换行 + 刷新缓冲区(确保数据即时输出) | cout << "Hello" << endl; // 输出后换行并刷新 |
flush |
仅刷新缓冲区(不换行) | cout << "Loading..." << flush; // 即时显示进度 |
ends |
插入空字符 \0 (用于 C 风格字符串结束) |
cout << "test" << ends; // 输出 "test\0" |
四、流状态检查与控制(处理 I/O 错误)
流对象内部维护 "状态标志",用于表示 I/O 操作是否成功(如输入错误、文件结束等),通过以下成员函数可查询或修改状态:
函数 | 作用 | 示例场景 |
---|---|---|
good() |
若流状态正常(无错误),返回 true |
if (cin.good()) { ... } |
fail() |
若操作失败(如输入类型不匹配),返回 true |
if (cin.fail()) { 处理输入错误 } |
eof() |
若到达输入末尾(如文件结束、用户按 Ctrl+Z),返回 true |
while (!cin.eof()) { ... } |
clear() |
清除流的错误状态(重置状态标志) | cin.clear(); // 恢复输入流可用 |
ignore(n) |
忽略输入缓冲区中前 n 个字符(默认 1 个) |
cin.ignore(100, '\n'); // 忽略到换行前的字符 |
五、字符 / 行输入输出函数(精细控制)
流对象还提供了更底层的成员函数,用于读取 / 输出单个字符或整行数据(支持空格)。
函数 | 作用 | 示例 |
---|---|---|
put(char c) |
输出单个字符(ostream 成员) |
cout.put('A'); // 输出 'A' |
get() |
读取单个字符(包括空格、回车) | char c = cin.get(); // 读取一个字符 |
getline(char* buf, int n) |
读取一行到字符数组(最多 n-1 个字符,自动加 \0 ) |
char buf[100]; cin.getline(buf, 100); // 读一行(含空格) |
总结
<iostream>
的核心接口围绕 "标准流对象" 展开,通过 <<
/>>
运算符实现便捷 I/O,通过操纵符控制格式,通过状态函数处理错误,通过字符 / 行函数实现精细控制。这些接口是 C++ 控制台交互的基础,配合 <iomanip>
(格式控制)、<string>
(字符串处理)等头文件可实现更复杂的功能。