目录
输入/输出操纵符
输入输出操纵符是 C++ 中用于控制输入输出流格式的一组特殊函数或对象。它们通常用于格式化输出,例如设置宽度、精度、对齐方式等,而不涉及数据的实际读写。
- 功能概述:输入输出操纵符能够控制输出的外观,比如调整对齐方式、设置输出的宽度和精度、控制换行等。
- 使用场景:让输出看起来更整洁、更易于阅读
- 如何使用:这些操纵符通常通过
operator <<
或operator >>
操作符与std::cout
或std::cin
等结合使用。
简单示例
- 换行:
endl
用于在输出后插入一个换行符,并清空输出缓冲区。 - 设置宽度:
setw(n)
用于设置输出的宽度,使得输出更加整齐。 - 设置精度:
setprecision(n)
用于设置浮点数输出的小数位数。 - 对齐方式:
left
,right
,internal
用于设置输出的对齐方式。 - 布尔值格式:
boolalpha
用于将布尔值输出为true
或false
。 - 基数格式:
hex
,oct
,dec
用于设置输出的基数,如十六进制、八进制或十进制。
输入操纵符(Input Manipulators)
-
std::setw(int n)
: 设置字段宽度为n个字符。例如:std::cout << std::setw(10) << "Hello"; // 输出为 " Hello"
-
std::setprecision(int n)
: 设置浮点数精度为n位。例如:double pi = 3.1415926535; std::cout << std::setprecision(3) << pi; // 输出为 "3.14"
-
std::fixed
和std::scientific
: 控制浮点数的输出格式。例如:double number = 123.456; std::cout << std::fixed << number; // 输出固定小数点格式 std::cout << std::scientific << number; // 输出科学计数法格式
-
std::boolalpha
和std::noboolalpha
: 控制布尔值的输出格式。例如:bool flag = true; std::cout << std::boolalpha << flag; // 输出为 "true"
-
std::ws
: 跳过输入流中的空白字符,直到遇到非空白字符为止。例如:std::string name; std::cin >> std::ws; std::getline(std::cin, name);
-
std::getline
: 从输入流中读取一整行字符串,直到换行符为止。std::string line; std::getline(std::cin, line);
输出操纵符(Output Manipulators)
-
std::noskipws
: 禁用空白字符的忽略。例如:std::cin >> std::noskipws >> ch;
-
std::showpoint
: 总是显示浮点数的小数点和末尾的零。例如:double value = 3.0; std::cout << std::showpoint << value; // 输出为 "3.000"
-
std::uppercase
: 将十六进制数字大写显示。例如:int number = 255; std::cout << std::uppercase << std::hex << number; // 输出为 "FF"
-
std::endl
: 输出换行并刷新输出缓冲区。这有时用于确保输出立即显示。例如:std::cout << "Hello, World!" << std::endl;
-
std::hex
: 将整数以十六进制格式输出。例如:int number = 255; std::cout << std::hex << number; // 输出为 "ff"
-
std::dec
: 将整数以十进制格式输出(这是默认格式)。例如:int number = 255; std::cout << std::dec << number; // 输出为 "255"
-
std::oct
: 将整数以八进制格式输出。例如:int number = 255; std::cout << std::oct << number; // 输出为 "377"
-
std::left
和std::right
: 控制字段的对齐方式。例如:std::cout << std::left << std::setw(10) << "Hello"; // 左对齐 std::cout << std::right << std::setw(10) << "World"; // 右对齐
-
std::internal
: 将符号放在左边而数字右对齐,通常用于负数或带符号的输出。例如:std::cout << std::internal << std::setw(10) << -123;
-
std::setfill(char c)
: 使用指定的字符填充宽度不足的空白。例如:std::cout << std::setfill('*') << std::setw(10) << 42; // 输出为 "********42"
-
std::showbase
: 和显示整数的进制基数(如十六进制的0x,八进制的0)。例如:int number = 255; std::cout << std::showbase << std::hex << number; // 输出为 "0xff"
-
std::nouppercase
: 禁止十六进制数字的大写输出。例如:int number = 255; std::cout << std::nouppercase << std::hex << number; // 输出为 "ff"
-
std::noshowbase
: 禁止显示整数的进制基数。例如:int number = 255; std::cout << std::noshowbase << std::hex << number; // 输出为 "ff"
组合使用
- 组合方式1
int number = 255;
std::cout << std::setfill('0') << std::setw(10)
<< std::showbase << std::uppercase << std::hex << number;
输出结果为 "0X000000FF"
。
-
组合方式2:
通过
std::setiosflags
和std::resetiosflags
函数来组合和取消。例子如下:
std::cout << std::setiosflags(std::ios::fixed | std::ios::showpoint)
<< std::setprecision(2) << value;
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容