#include <iostream>
#include <cstdlib>
#include <cstring>
#include <iomanip>              // 控制符头文件
using namespace std;
// 格式化输出
void func(){
    // 方式一:使用成员方法
    int number = 10;
    cout << number << endl;
    cout.unsetf(ios::dec);
    // 八进制 
    cout.setf(ios::oct);
    cout.setf(ios::showbase);
    cout << number << endl;     // 012
    // 十六进制
    cout.unsetf(ios::oct);
    cout.setf(ios::hex);
    cout << number << endl;     // 0xa
    // 固定宽度
    cout.width(10);
    cout.fill('*');
    cout << number << endl;     // *******0xa
    // 上面的设置只对当前输出有效,下次的输出格式要重新设置
    cout.setf(ios::left);
    cout.width(10);
    cout.fill('*');
    cout << number << endl;     // 0xa*******
    
    // 方式二:使用控制符的方式
    cout << hex
         << setiosflags(ios::showbase)
         << setiosflags(ios::right)
         << setw(10)
         << setfill('~')
         << number
         << endl;               // ~~~~~~~0xa
}
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    double x = 1234567.89, y = 12.3456789;
    int m = 12, n = 1234567;
    // 控制精度为 6 位有效数字,会被四舍五入
    // 整型不受精度控制
    cout << setprecision(6) << x << endl << y << endl << m << endl << n << endl;
    cout << "------------------" << endl;
    // 控制小数点后有 6 位小数,不够的补 0,同样会被四舍五入
    // 同样,整型不受精度控制
    cout << setiosflags(ios::fixed) << setprecision(6) << x << endl << y << endl << m << endl << n << endl;
    return 0;
}

输出:

1.23457e+06
12.3457
12
1234567
------------------
1234567.890000
12.345679
12
1234567