C++格式化输出

来源:互联网 发布:网络林志玲黄诗诗 编辑:程序博客网 时间:2024/06/09 17:14

在C语言里面,使用printf()函数格式化输出。例如printf(“%d-%f-%2.5f”,a,b,c);
但是在C++里面就尴尬了,cout << a << b << c << endl;输出的都是默认格式,这些往往不是我们需要的格式。
在C++里面也提供了格式化输出的方法,但是方法比C语言稍微麻烦。C++格式化输出需要引入头文件:#include ,里面提供的方法基本功能与printf()一样,如下两者的对比:

序号 内容 C++ C语言 1 十进制输出 dec “%d” 2 八进制输出 otc “%o” 3 十六进制输出 hex “%x” 4 填充字符 setfill(‘0’) “0%d” 6 设置小数点显示 setprecision(n) “0%.2f” 7 设置区域宽度 setw(5) “0%5” 8 固定的浮点显示 setioflags(ios::fixed) 9 指数表示 setioflags(ios::scientific) 10 左对齐 setiosflags(ios::left) %”-2f” 11 右对齐 setiosflags(ios::right) %”2f” 12 忽略前导空白 setiosflags(ios::skipws 13 16进制数大写输出 setiosflags(ios::uppercase) “%x” 14 16进制小写输出 setiosflags(ios::lowercase) “%X” 15 强制显示小数点 setiosflags(ios::showpoint) 16 强制显示符号 setiosflags(ios::showpos)

下面看个简单的例子:模拟一个秒表,格式:HH:mm:ss

#include <iostream>#include <iomanip>using namespace std;int main(){    int hour = 0;    int min  = 0;    int sec  = 0;    for(int i=0; i<10000; i++)    {        cout << "\t" <<setfill('0') <<setw (2) << hour  <<":" << setw (2) << min  <<":" << setw (2) << sec << endl;        sec++;        if(sec > 59){            min++;            sec=0;        }        if(min>59){            hour++;            min=0;        }        sleep(1);    }    return 0;}
原创粉丝点击