C++ iomanip 常用函数

<iomanip> 是 C++ 中用于格式化输入输出的重要头文件,以下是常用函数和操纵符:

1. setw(int n) - 设置字段宽度

cpp 复制代码
cout << setw(10) << "Hello" << endl;  // 输出: "     Hello"
cout << setw(5) << 123 << endl;       // 输出: "  123"

2. setprecision(int n) - 设置浮点数精度

cpp 复制代码
double pi = 3.1415926;
cout << setprecision(3) << pi << endl;   // 输出: 3.14
cout << fixed << setprecision(2) << pi << endl; // 输出: 3.14 (固定小数位)
cout << scientific << setprecision(4) << pi << endl; // 输出: 3.1416e+00

3. setfill(char c) - 设置填充字符

cpp 复制代码
cout << setfill('*') << setw(10) << 123 << endl;  // 输出: "*******123"
cout << setfill('0') << setw(5) << 42 << endl;    // 输出: "00042"

4. setbase(int base) - 设置进制

cpp 复制代码
int n = 255;
cout << setbase(16) << n << endl;  // 输出: ff (十六进制)
cout << setbase(8) << n << endl;   // 输出: 377 (八进制)
cout << setbase(10) << n << endl;  // 输出: 255 (十进制)

5. setiosflags() / resetiosflags() - 设置/清除格式标志

cpp 复制代码
cout << setiosflags(ios::left) << setw(10) << "Hello" << endl;  // 左对齐
cout << resetiosflags(ios::left) << setw(10) << "Hello" << endl; // 恢复右对齐

// 常用标志组合
cout << setiosflags(ios::fixed | ios::showpoint) << 123.0 << endl; // 输出: 123.00

6. 常用格式化标志

cpp 复制代码
// 对齐方式
ios::left   // 左对齐
ios::right  // 右对齐(默认)
ios::internal // 符号左对齐,数值右对齐

// 数值格式
ios::dec    // 十进制
ios::hex    // 十六进制
ios::oct    // 八进制
ios::fixed  // 固定小数位
ios::scientific // 科学计数法
ios::boolalpha  // true/false 代替 1/0
ios::showpoint  // 显示小数点
ios::showpos    // 显示正数符号
ios::uppercase  // 十六进制大写

7. 完整示例

cpp 复制代码
#include <iostream>
#include <iomanip>

int main() {
    double value = 123.456;
    
    // 格式化输出表格
    cout << left << setw(10) << "Number" 
         << right << setw(10) << "Value" << endl;
    cout << setfill('-') << setw(20) << "" << setfill(' ') << endl;
    
    cout << left << setw(10) << "Pi" 
         << fixed << setprecision(2) << setw(10) << 3.14159 << endl;
    
    cout << left << setw(10) << "E" 
         << scientific << setprecision(4) << setw(10) << 2.71828 << endl;
    
    // 格式化输出
    cout << showpos << setw(10) << 100 << endl;    // 输出: "+100"
    cout << noshowpos << endl; // 关闭正号显示
    
    // 布尔值输出
    cout << boolalpha << true << " " << false << endl;  // 输出: "true false"
    
    return 0;
}

8. 常用组合技巧

cpp 复制代码
// 对齐填充
cout << left << setw(15) << setfill(' ') << "Name" << setw(10) << "Score" << endl;

// 货币格式化
double money = 1234.56;
cout << showpos << fixed << setprecision(2) << money << endl;  // +1234.56

// 十六进制输出大写
int num = 255;
cout << hex << uppercase << num << endl;  // "FF"
相关推荐
蒸蒸yyyyzwd9 分钟前
八股学习 MVCC 慢查询优化和 read 过程
c++·八股
君顾113 分钟前
本地城市社区家政物业联动系统源码:架构设计与派单联动实战
java·开发语言·健身房
APEX真好玩17 分钟前
把高频传感器(IMU)数据封装进 MP4:FFmpeg 私有数据轨实践
c++
AI编码进化论23 分钟前
云IDE介绍:环境模板化、Agent上云,云IDE该怎么选
开发语言·ide·人工智能·团队开发·ai编程
晴天的雨.99229 分钟前
[C++算法]盛最多水的容器(双指针算法)
开发语言·c++·算法
泡海椒32 分钟前
jquick-pdf 文本元素实战:段落、行内文本、制表符用法详解
java·开发语言·pdf
布莱克6051 小时前
理解内存泄漏:成因、发现方法与解决策略(C++ 举例)
c语言·c++·内存泄漏
“AI国潮设计-小江”1 小时前
【SDXL实战】Python自动化生成3D潮汕美食IP,附ComfyUI工作流与商用变现思路
开发语言·人工智能·python·prompt·aigc
此生决int2 小时前
深入理解C++系列(19)——C++11(上)
开发语言·c++
郝学胜-神的一滴2 小时前
C++20模板元编程 05:吃透变参模板,解锁编译期万能参数能力
服务器·开发语言·c++·windows·vscode