这些关键字会改变流的行为。每个关键字都会影响输出流(如 std::cout
)的行为,确保输出按照预期的格式显示。
1. endl
- 功能: 插入换行符并刷新流。
- 使用:
std::endl
会在输出流中插入一个换行符(等同于'\n'
),然后刷新缓冲区,确保所有数据立即输出到目标设备。 - 示例:
输出:std::cout << "Hello" << std::endl << "World";
Hello World
2. ws
- 功能: 跳过所有空白字符,直到找到另一个字符为止。
- 使用:
std::ws
通常用于输入流(如std::cin
),它会忽略输入中的所有空白字符(空格、制表符、换行符),直到遇到一个非空白字符。 - 示例:
如果输入中包含空白字符,std::string input; std::cin >> std::ws >> input;
std::ws
会跳过这些空白字符,读取第一个非空白字符及其后的内容。
3. boolalpha
- 功能: 以布尔值的文字形式(“true” 和 “false”)打印布尔值。
- 使用: 使用
std::boolalpha
,可以将布尔值以文字形式输出,而不是数字1
和0
。 - 示例:
输出:std::cout << std::boolalpha << true << " " << false;
true false
4. hex
- 功能: 以十六进制格式打印数字。
- 使用: 使用
std::hex
,可以将整数以十六进制格式输出。 - 示例:
输出:int number = 255; std::cout << std::hex << number;
ff
5. setprecision
- 功能: 调整打印数字的精度。
- 使用: 使用
std::setprecision(n)
,可以设置浮点数的显示精度,其中n
表示精度位数。 - 示例:
输出:#include <iomanip> double number = 3.141592653589793; std::cout << std::setprecision(5) << number;
3.1416
综合示例
以下是一个综合示例,展示如何使用这些关键字:
#include <iostream>
#include <iomanip> // for std::setprecision
int main() {
// 使用 endl 插入换行符并刷新流
std::cout << "Using endl:" << std::endl;
// 使用 ws 跳过空白字符
std::cout << "Please enter a word after some spaces:" << std::endl;
std::string word;
std::cin >> std::ws >> word;
std::cout << "You entered: " << word << std::endl;
// 使用 boolalpha 打印布尔值
std::cout << "Using boolalpha: " << std::boolalpha << true << " " << false << std::endl;
// 使用 hex 以十六进制格式打印数字
int number = 255;
std::cout << "Using hex: " << std::hex << number << std::endl;
// 使用 setprecision 调整打印数字的精度
double pi = 3.141592653589793;
std::cout << "Using setprecision: " << std::setprecision(5) << pi << std::endl;
return 0;
}
输出结果
Using endl:
Please enter a word after some spaces:
(用户输入: " hello")
You entered: hello
Using boolalpha: true false
Using hex: ff
Using setprecision: 3.1416
通过以上示例,我们展示了如何使用这些关键字来改变输出流的行为,从而达到特定的格式化输出效果。