zoukankan      html  css  js  c++  java
  • 格式化输入与输出

    标准库定义了操纵符来修改流的状态,endl 就是一个操纵符,它输出一个换行符并刷新缓冲区。

    控制布尔值格式

    • boolalpha 控制输出 true、false。
    • noboolalpha 取消输出 true、false,恢复默认的输出格式。
    cout << "default bool values: " << true << " " << false << endl;
    cout << "alpha bool values: " << boolalpha  << true << " " << false <<  endl;
    cout << noboolalpha;
    cout << true << endl;
    

    控制整型值格式

    指定整型值的进制

    • oct 八进制。
    • hex 十六进制。
    • dec 十进制。
    cout << "default:" << 20 << " " << 1024 << endl;	
    cout << "octal:" <<oct<< 20 << " " << 1024 << endl;
    cout << "hex:" << hex<<20 << " " << 1024 << endl;
    cout << "decimal:" << dec << 20 << " " << 1024 << endl;
    

    在输出中指出进制

    • showbase 显示进制。
    • noshowbase 恢复流默认状态。
    cout << showbase;
    cout << "default:" << 20 << " " << 1024 << endl;
    cout << "in oct:" << oct<<20 << " " << 1024 << endl;
    cout << "in hex:" << hex<<20 << " " << 1024 << endl;
    cout << "in decimal:" << dec<<20 << " " << 1024 << endl;
    cout << noshowbase;
    

    控制浮点值格式

    浮点数的输出格式控制分为:

    • 以多高的精度打印。
    • 数值是打印为十六进制、定点十进制还是科学计数法形式。
    • 没有小数部分的浮点值是否打印小数点。

    默认情况下:

    • 浮点数按六位精度打印。
    • 如果浮点值没有小数部分,则不打印小数点。
    • 非常大或非常小的值打印为科学计数法形式,其它值打印为定点十进制形式。

    指定打印精度

    • 调用 precision 成员。
    • 使用 setprecision 操纵符,定义在头文件 iomanip 中。
    cout << "Precision: " << cout.precision() << endl; //@ 查看当前的打印精度
    cout << "Values: " << sqrt(2.0) << endl;
    cout.precision(12);		//@ 设置打印精度
    cout << "Precision:" << cout.precision() << endl;
    cout << "Values: " << sqrt(2.0) << endl;
    
    cout << setprecision(3);
    cout << "Values: " << sqrt(2.0) << endl;
    

    显示小数点

    • showpoint 对浮点值总是显示小数点。
    • noshowpoint 只有浮点值包含小数部分时才显示小数点。
    cout << showpoint;
    cout << 3.0 << endl;
    cout << noshowpoint;
    cout << 3.0 << endl;
    

    指定浮点数计数法

    • scientific 浮点值显示为科学计数法
    • fixed 浮点值显示为定点十进制
    • hexfloat 浮点值显示为十六进制 (C++ 11)
    • defaultfloat 重置浮点数格式为十进制 (C++ 11)
    cout << "default format:" << 100 * sqrt(2.0) << endl;
    cout <<"scientific format:"<< scientific << 100 * sqrt(2.0) << endl;
    cout <<"fixed decimal format:" << fixed <<100 * sqrt(2.0) << endl;
    cout << "hex decimal format:" << hexfloat << 100 * sqrt(2.0) << endl;
    cout <<"use defaults:"<<defaultfloat<< 100 * sqrt(2.0) << endl;
    

    操纵符

    iostream 中的其它操纵符

    操纵符 说明
    uppercase 十六进制 0X,科学计数法 E
    nouppercase 十六进制 0x,科学计数法 e
    showpos 对非负数显示 +
    noshowpos 对非负数不显示 +
    left 在值的右侧添加填充字符
    right 在值的左侧添加填充字符
    internal 在符号和值之间添加填充字符
    unitbuf 每次输出操作后都刷新缓冲区
    nounitbuf 恢复正常的缓冲区刷新方式
    skipws 输入运算符跳过空白符
    noskipws 输入运算符不跳过空白符
    flush 刷新 ostream 缓冲区
    ends 插入空字符,然后刷新 ostream 缓冲区
    endl 插入换行,然后刷新 ostream 缓冲区

    iomanip 中的操纵符

    操纵符 说明
    setfill(ch) 用 ch 填充空白
    setprecision(n) 将浮点精度设置为n
    set(w) 读或写值的宽度为w个字符
    setbase(b) 将整数输出为b进制
    int i = -16;
    double d = 3.14159;
    
    //@ 默认右对齐
    cout << "i: " << setw(12) << i << endl;
    cout << "d: " << setw(12) << d << endl;
    
    cout << left;	//@ 设置左对齐
    cout << "i: " << setw(12) << i << endl;
    cout << "d: " << setw(12) << d << endl;
    
    //@ 恢复右对齐
    cout << right;
    cout << "i: " << setw(12) << i << endl;
    cout << "d: " << setw(12) << d << endl;
    
    //@ 补白第一列,但补在域的内部
    cout << internal;
    cout << "i: " << setw(12) << i << endl;
    cout << "d: " << setw(12) << d << endl;
    
    cout << setfill('#');
    cout << "i: " << setw(12) << i << endl;
    cout << "d: " << setw(12) << d << endl;
    setfill(' ');
    

    控制输入格式

    默认情况下,输入运算符会忽略空白符(空格符,制表符,换行符,换纸符,回车符)。
    操纵符 noskipws 会令输入运算符读取空白符,而不是跳过,恢复默认行为可以使用 skipws。

    char ch;
    while (cin >> ch)		//@ 输入 ab    c
    	cout << ch;			//@ 输出 abc
    
    cin >> noskipws;
    while (cin >> ch)	//@ ab     c
    	cout << ch;		//@ ab     c
    cin >> skipws;
    
  • 相关阅读:
    MySQL 中随机抽样:order by rand limit 的替代方案
    mysql下distinct和group by区别对比
    MVC中实现多按钮提交(转)
    js的逻辑 OR 运算符- ||
    js 实现键盘记录 兼容FireFox和IE
    jquery扩展
    sp_executesql的用法
    MVC中,视图的Layout使用
    MVC4的过滤器
    MVC中的Repository模式
  • 原文地址:https://www.cnblogs.com/xiaojianliu/p/12398238.html
Copyright © 2011-2022 走看看