C++格式化输出

简介: C++格式化输出

在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出。

(如有时候需要按十六进制或者八进制输出、按指定的宽度、保留小数点后两位)

C++提供了两种方法:

1).使用控制符的方法   2).使用流对象的有关成员函数

使用控制符的方法

#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
    int a;
    cout<<"input:";
    cin>>a;
    // cout<<"dec:"<<dec<<a<<endl; //dec 以十进制的方式输出
    // cout<<"hex:"<<hex<<a<<endl; //hex 以十六进制的方式输出
    // cout<<"oct:"<<oct<<a<<endl; //oct 以八进制的方式输出
    // //分别以十进制 八进制 十六机制的方式输出   不支持以二进制方式输出
    // cout<<setbase(10)<<a<<endl;
    // cout<<setbase(8)<<a<<endl;
    // cout<<setbase(16)<<a<<endl;
    //指定域宽
    const char *p = "china";
    cout<<setw(10)<<a<<endl;    //右对齐
    cout<<setw(10)<<p<<endl;
    cout<<setfill('*')<<setw(10)<<p<<endl;
    double pi = 22/7.0;
    cout<<setiosflags(ios::scientific)<<setprecision(8)<<pi<<endl;  //科学计数法
    cout<<setiosflags(ios::fixed)<<setprecision(4)<<pi<<endl;   //小数方式
    return 0;
}

人们在输入输出时有一些特殊的要求,如输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C++提供了在输入输出流中使用的控制符

控制符 作用
dec 设置数值的基数为10
hex 设置数值的基数为16
oct 设置数值的基数为8
setfill(ch) 设置填充字符c,c可以是字符符常量或字符变量
setprecision(n) 设置浮点数的精度为n位。在以一般十进制小数形式输出时,n代表有效数位。在以fixed形式输出时,n为小数位数
setw(n) 设置字段宽度为n位
setiosflags(ios::fixed) 设置浮点数以固定的小数显示
setiosflags(ios::sientific) 设置浮点数以科学计数法显示
setiosflags(ios::left) 输出数据左对齐
setiosflags(ios::right) 输出数据右对齐
setiosflags(ios::skipws) 忽略前导的空格
setiosflags(ios::uppercase) 数据以十六进制形式输出时字母以大写表示
setiosflags(ios::lowercase) 数据以十六进制形式输出时字母以小写表示
setiosflags(ios::showpos) 输出正数时给出 “+” 号

小数输出的注意点:

       double  a = 123.45567890;

       cout<<a;                                                //输出 123.455

       cout<<setprecision(9)<<a;                    //输出 123.455678

       cout<<setprecision(6)<<a;                    //输出 123.455

       cout<<setiosflags(ios::fixed);                //输出 123.455678

       cout<<setiosflags(ios::fixed)<<setprecision(8)<<a;  //输出 123.45567890

       cout<<setiosflags(ios::scientfic)<<a;        //输出 1.234556e+02

       cout<<setiosflags(ios::scientfic)<<setprecision(4)<<a;  //输出 1.2345e02


用流对象的成员函数控制输出格式

除了可以用控制符来控制输出格式外,还可以通过调用流对象cout中用于控制输出格式的成员函数来控制输出格式

流成员函数 与之作用相同的控制符
precision(n) setprecision(n)
width(n) setw(n)
fill(ch) setfill(ch)
setf() setiosflags()
unsetf() resetfiosflags()    终止已设置的输出格式状态

格式标志在类ios中被定义为枚举值。因此在引用的时候需要加上 ios::

ios::left 左对齐
ios::right 右对齐
ios::internal 数值的符号位在域内左对齐,数值右对齐,,中间由填充字符填充
ios::dec

设置整数的基数为10

ios::oct 设置整数的基数为8
ios::hex

设置整数的基数为16

ios:showbase 强制输出整数的基数
ios::uppercase 大写(十六进制或者科学计数法E)
ios::showpos 正数显示 “+“ 号
ios::scientific 浮点数以科学记数法格式输出
ios::fixed 浮点数以小数的形式输出
ios::unitbuf 每次输出之后刷新所有的流
ios::stdio 每次输出之后清除 stdout stderr
#include <iostream>
using namespace std;
int main(void)
{
    int a = 29;
    cout.setf(ios::showbase);   //显示基数符号
    cout<<a<<endl;  //默认是十进制
    cout.unsetf(ios::dec);  //终止十进制的格式
    cout.setf(ios::oct);    //设置为八进制
    cout<<a<<endl;
    cout.unsetf(ios::oct);  //终止八进制方式输出
    cout.setf(ios::hex);
    cout<<a<<endl;
    cout.unsetf(ios::hex);
    char *p = "china";
    cout.width(10); //设置宽度为10
    cout<<p<<endl;
    cout.flush();
    cout.width(10);
    cout.fill('*');
    cout<<p<<endl;
    return 0;
}
相关文章
|
6月前
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
3946 1
|
6月前
|
算法 编译器 C++
【C++ 格式化输出 】C++ 高级输出格式化:掌握 iostream 与 iomanip
【C++ 格式化输出 】C++ 高级输出格式化:掌握 iostream 与 iomanip
413 1
|
12月前
|
测试技术 C语言 C++
C++常用格式化输出转换
C++常用格式化输出转换
75 0
|
6月前
|
Linux C++
vscode 如何修改c/c++格式化风格,大括号不换行
vscode 如何修改c/c++格式化风格,大括号不换行
|
C语言 iOS开发 C++
C++ 的cout格式化输出
在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留 2 位小数,再比如以十六进制的形式输出整数,等等。 对于学过 C 语言的读者应该知道,当使用 printf() 函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如 %.2f 表示输出浮点数时保留 2 位小数,%#X 表示以十六进制、带 0X 前缀的方式输出整数。 关于 printf() 函数支持的格式控制符,更详细的讲解,可阅读《C语言数据输出大汇总》一节,这里不做详细赘述。 C++ 通常使用 cout 输出数据,和 printf() 函数相比,cout 实现格式化输出数据的方
129 0
|
安全 C++ 数据格式
C++ 字符串格式化转为 数据变量 - sscanf,sscanf_s及其相关用法
C++ 字符串格式化转为 数据变量 - sscanf,sscanf_s及其相关用法
227 0
|
C语言 C++
C/C++格式化输入与输出(位宽,左右对齐,%d,%f等)总结
C/C++格式化输入与输出(位宽,左右对齐,%d,%f等)总结
1550 0
|
Unix C语言 iOS开发
C++cin,cout以及常见函数总结,cin,cout格式化控制
C++cin,cout以及常见函数总结,cin,cout格式化控制
C++cin,cout以及常见函数总结,cin,cout格式化控制
[VC++]用CTime类得到当前日期、时间、星期,格式化(详细讲解)
用CTime类得到当前日期、时间、星期,格式化(详细讲解)2009/05/12 09:48 A.M.① 定义一个CTime类对象 CTime time; ② 得到当前时间 time = CTime::GetCurrentTime(); ③ GetYear( ),GetMonth( ), GetD...
1592 0