格式化输出输入一二事

前言

输出输入流可以通过各种方式设置多种多样的格式化操作,给输出输入提供多种选项。
每种格式化将输出将通过两种方式进行描述,一种是操纵符,一种是成员函数。操作符一般在流中插入以进行格式化输出,成员函数则是通过对象调用起作用。

注意,流操纵符一般都在iomanip.h中,而成员函数一般都在iostream.h中。

进制相关

整型数字的显示格式

操纵符

设置进制

int n = 100;
cout << dec << n << endl;    //十进制
cout << oct << n << endl;    //八进制
cout << hex << n << endl;    //十六进制
cout << setbase(10) << n << endl;        //通过参数来设置进制
100
144
64
100
  1. 设置之后会一直起作用,具有黏性

显示基数

cout << showbase;        //调用显示基数
int n = 100;
cout << dec << n << endl; 
cout << oct << n << endl;  
cout << hex << n << endl;  
cout << noshowbase;     //重置设定
cout << hex << n << endl;
100
0144
0x64
64

浮点精度

浮点数显示的精度,一般默认是6,可设置

操纵符

使用

const int PI = 3.14159;
for (int i = 0; i < 6; i++)
    cout << setprecision(i) << PI << endl;        //设定显示精度

输出

3
3.1
3.14
3.141
3.1415
3.14159

使用事项

  1. 会一直影响后面的输出直到下一次设置精度操作

成员函数

使用

const int PI = 3.14159;
for (int i = 0; i < 6; i++){
    cout.precision(i);
    cout << PI << endl;
}

输出

3
3.1
3.14
3.141
3.1415
3.14159

使用事项

  1. 会一直影响后面的输出直到下一次设置精度操作

域宽

域宽也就是输出值所占的字符数或者是可以输入的最大字符数,如果输出的字符不够在左边用空格(默认)来凑

操纵符

使用

int widthValue = 4;
char sentence[10];

while (cin >> setw(5) >> sentence) {            //设定每次输入最多5个字符
	cout << setw(widthValue++) << sentence << endl;
}

输入

This is a test of the width member function

输出

This
   is
     a
   test
      of
      the
      widt
          h
        memb
           er
          func
           tion

使用事项

  1. 仅能影响下一次的输入或输出,不具备黏性
  2. 注意是默认的对齐方式,即右对齐左边填充字符

成员函数

使用

int widthValue = 4;
char sentence[10];

cin.width(5);                //设置输入的宽度,即一次最多读入多少字符

while (cin >> sentence) {
    cout.width(widthValue++);         //设置输出的宽度
    cout << sentence << endl;
    cin.width(5);                     //需要注意的是,因为域宽的设置是不具备黏性的,所以需要一直设置
}

输入

This is a test of the width member function

输出

This
   is
     a
   test
      of
      the
      widt
          h
        memb
           er
          func
           tion

使用事项

  1. 仅能影响下一次的输入或输出,不具备黏性

对齐方式

输出字符的对齐方式

操纵符

使用

cout << left << 输出内容;
cout << right << 输出内容;

使用事项

  1. 具有黏性
  2. 为了能看出效果一般和setw搭配使用
  3. left是使域左对齐并在右边填充填充字符,right是使域右对齐并在左边填充字符

填充字符的设置

指定对齐域的填充字符,如果没有被指定,则使用空格符填充

操纵符

使用

cout << setfill(char c) << 输出内容;

使用事项

  1. 具有黏性
  2. 一般和设置域宽和对齐方式一起使用

成员函数

使用

cout.fill(char c);
cout << 输出内容;

使用事项

  1. 具有黏性
  2. 一般和设置域宽和对齐方式一起使用

其他常见操纵符

流操纵符 适用流 描述
skipws 输入流 跳过输入流的空白字符,使用流操纵符noskipws重置设定
showpoint 输出流 指明浮点数必须显示小数点即使全部是0,同长使用fixed流操纵符来确保小数点右边数组的位数,可以使用noshowpoint重置
showpos 输出流 在正数前显示+,可以使用noshowpos重置
fixed 输出流 以定点小数的形式显示浮点数,并指定小数点右边的位数
scientific 输出流 以科学计数法的输出显示浮点数
uppercase 输出流 指明当显示十六进制数时使用大写字母,可以使用nouppercase重置

猜你喜欢

转载自www.cnblogs.com/Za-Ya-Hoo/p/12682906.html