cout格式化输出 详解

//在使用setf等库函数时使用

//在使用流操纵算子时使用

//using namespace std;

//以下所有的setf()都有对应的unsetf()用于取消设置

//所有的setiosflags()可以用resetiosflags()取消

//标志位fmtflags的命名空间可以使用ios_base::或者ios:: int laneri = 12345; double lanerd = 56789;

//1、设置整数进制输出

//重载1:fmtflags ios_base::setf(fmtflags _Mask);

//重载2:fmtflags ios_base::setf(fmtflags _Mask, fmtflags _Unset);

//使用重载1的时候,一定要先取消当前基,之后才可以设置新的基

//使用重载2的时候,第二个参数设为当前的基,或者当不知道当前基时,设为ios_base::basefield清除当前的

//所有可能的基

//可使用的标志:ios::dec, ios::oct, ios::hex, ios::basefield(= dec|oct|hex)

cout.unsetf(ios::dec);   //等价1 cout.setf(ios::hex);

cout.setf(ios::hex, ios_base::basefield); //等价2 cout<<laneri<<endl;

cout<<setiosflags(ios::hex)<<laneri<<endl; //等价3 cout<<std::hex<<laneri<<endl;   //等价4

//使用输入输出操纵符也能有等价效果(命名空间使用std::,否则会有多余的字符),注意这种方法其实不止对

//本句生效

//2、 显示进制前导字符(0、0x) cout.setf(ios::showbase);

cout<<setiosflags(ios::showbase)<<laneri<<endl; cout<<std::showbase<<laneri<<endl;

//3、使用科学记数法

//只对数据类型为小数的变量有效(或者字面值是小数) //对precision有影响(详见precision的说明)

//对ios::fixed有影响(详见fixed的说明),但不会被fixed影响 cout.setf(ios::scientific); cout<<lanerd<<endl;

cout<<setiosflags(ios::scientific)<<lanerd<<endl; cout<<std::scientific<<lanerd<<endl;

//4、设置小数的浮点/定点显示方式

//主要依靠precision体现(详见precision的说明)

//当设置了ios::scientific标志时,ios::fixed会受到影响,std::fixed不会

cout.setf(ios::fixed);  cout<<lanerd<<endl;

cout<<setiosflags(ios::fixed)<<lanerd<<endl;  cout<<std::fixed<<lanerd<<endl;

//5、设置小数数据类型的显示精度,受到scientific和fixed的影响 //当设置(fixed | scientific)时,precision(n)表示小数点后固定显示n位小数

//当不设置(fixed & scientific)时,precision(n)表示固定显示n位数字 // 其中,当是整数且位数m小于n,而又没有设置showpoint的时候,只显示m位整数。例如:precision(3),12->12

// 其中,当是整数且位数p大于n,无论设置showpoint与否,都四舍五入后使用科学计数法。例如:precision(3),1234->1.23e+003 cout.precision(3); cout<<lanerd<<endl;

cout<<setprecision(3)<<3.1415926<<endl;

//6、强制浮点数类型变量的小数点显示

//如果是整数,大于precision宽度时使用科学计数法,小于precision则小数点后面补0,等于precision时显示

//小数点但无小数

//例:不设fixed,precision(6):

1234567->1.23457E+006;   12345->12345.0;    123456->123456.

//  设fixed,precision(6):

1234567->1234567.000000; 12345->12345.000000; 123456->123456.000000 cout.setf(ios::showpoint);

cout<<setiosflags(ios::showpoint)<<lanerd<<endl; cout<<std::showpoint<<lanerd<<endl;

//7、设置屏幕上的最小显示宽度

//实际字符数大于等于这个数字,显示全部;小于这个数字,用fill()设置的字符来填充其他占位符

//注意:宽度设置只对下一个"<<"输出有效

//例如:cout<<setw(10)<<right<<"laner"<<"linke";只有"laner"是占10个字符,linke不是 cout.width(12);

//cout<<setw(12)<<3.14<<endl;

//8、显示对齐方式,默认为左对齐 cout.setf(ios::right);

cout<<setiosflags(ios::right)<<laneri<<endl;

cout<<std::right<<6.28<<endl;

//9、设置不足显示宽度时的填充字符,默认为‘ ‘ cout.fill(‘*‘);

cout<<setfill(‘$‘)<<laneri<<endl;

===================================================================== //附:ios_base::fmtflags

=====================================================================

时间: 2024-08-02 06:58:09

cout格式化输出 详解的相关文章

c++ cout格式化输出函数详解

这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等.通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言).更进一步而言,您还可以在<sstream>.<fstream>上使用这些格式化操作,从而代替sprintf和fprintf函数.为方便描述,下文仅以cout为例进行介绍. 一.综述 cout是STL库提供的一个iostream实例,拥有i

printf()格式化输出详解

% - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少. ②-:有-表示左对齐输出,如省略表示右对齐输出. ③0:有0表示指定空位填0,如省略表示指定空位不填. ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数.N指精度.用于说明输出的实型数的小数位数.对数值型的来说,未指定n时,隐含的精度为n=6位. ⑤l或h:l对整型指long型,对实型指double型.h用于将整型的格式字符修正为short型. -------------

cout 格式化输出

一直习惯于C语言的printf函数来打印,突然有一天要用cout来打印,发现有点不适应. 原来cout也是有格式化输出的. 首先要引入头文件 #include<iostream> // 在使用setf等库函数时使用 #include<iomanip> // 在使用流操纵算子时使用 cout可以用setw来设置字符串的长度,不足的话,可以用setfill来设置填充 string str = "1401435919"; time_t ti = atoi(str.c_

ThinkPHP模版引擎之变量输出详解

ThinkPHP模版引擎之变量输出详解 使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下,做出一些总结,分享给大家供大家参考.具体分析如下: 我们已经知道了在Action中使用assign方法可以给模板变量赋值,赋值后怎么在模板文件中输出变量的值呢? 如果我们在Action中赋值了一个name模板变量: $name = 'ThinkPHP'; $this->assign('name',$name); 使用内置的模板引擎输出变量,只需要在模版文件使用:

ORACLE——日期时间格式化参数详解 之一

2.日期格式化参数详解 2.1 -/,.;: 指定返回字串分隔符 SQL> select to_char(sysdate,'yyyy.mm.dd') from dual; TO_CHAR(SYSDATE,'YYYY.MM.DD') ----------------------------- 2015.12.28 SQL> select to_char(sysdate,'yyyy+mm=dd') from dual; TO_CHAR(SYSDATE,'YYYY+MM=DD') ---------

C++ cout 格式化输出方法

C语言里可以用printf(),%f来实现浮点数的格式化输出,用cout呢...? iomanip是I/O流控制头文件,就像printf的格式化输出一样. 以下是一些常用的: dec 置基数为10 相当于"%d"hex 置基数为16 相当于"%X"oct 置基数为8 相当于"%o"setfill(c) 设填充字符为csetprecision(n)   设显示小数精度为n位setw(n) 设域宽为n个字符setioflags(ios::fixed)

c++ 格式化输出函数详解

iomanip是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常的: dec 置基数为10 相当于"%d" hex 置基数为16 相当于"%X" oct 置基数为8 相当于"%o" setfill(c) 设填充字符为c setprecision(n)   设显示小数精度为n位 setw(n) 设域宽为n个字符 setioflags(ios::fixed)   固定的浮点显示 setioflags(ios::scientific) 指数

[转载] c++ cout 格式化输出浮点数、整数及格方法

C语言里可以用printf(),%f来实现浮点数的格式化输出,用cout呢...? 下面的方法是在网上找到的,如果各位有别的办法谢谢留下... iomanip.h是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常的: dec 置基数为10 相当于"%d" hex 置基数为16 相当于"%X" oct 置基数为8 相当于"%o" setfill(c) 设填充字符为c setprecision(n) 设显示小数精度为n位 setw(n)

cout格式化输出

问题描述: 有N条绳子, 它们的长度分别为Li. 如果从它们中切割出K条相同的绳子的话,这K条绳子每条最长能有多少? (备注:答案保留两位小数) <1>精确到小数点后两位输出 #include <iostream> #include <vector> #include <iomanip> using namespace std; int getDiv(vector<int> li, int max){ int ans =0; for(int i=