#include 相关

在c++程序里面经常见到下面的头文件

#include <iomanip>
  1. 这里面iomanip的作用比较多:主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件。
  2. 就像C里面的格式化输出一样.以下是一些常见的控制函数的:
    setioflags(ios::dec) 置基数为10 相当于"%d"
    ios::hex 置基数为16 相当于"%X"
    ios::oct 置基数为8 相当于"%o"
    setfill('*') 设填充字符为*
    setprecision(n) 设显示小数精度为n位
    setw(n) 设域宽为n个字符
    setioflags(ios::fixed) 固定的浮点显示
    setioflags(ios::scientific) 指数表示科学计数法
    setiosflags(ios::left) 左对齐
    setiosflags(ios::right) 右对齐
    setiosflags(ios::skipws) 忽略前导空白
    setiosflags(ios::uppercase) 16进制数大写输出
    setiosflags(ios::lowercase) 16进制小写输出
    setiosflags(ios::showpoint) 强制显示小数点
    setiosflags(ios::showpos) 强制显示符号
这个控制符的意思是保证输出宽度为n。如:
cout<<setw(3)<<1<<setw(3)<<10<<setw(3)<<100;` 输出结果为1 10100 (默认是右对齐)当输出长度大于3(<<1000),`setw(3)`不起作用。
 ios::dec			以10进制表示整数
ios::hex			以16进制表示整数
ios::oct			以8进制表示整数
ios::showbase		为整数添加一个表示其进制的前缀
ios::internal		在符号位和数值的中间插入需要数量的填充字符以使串两端对齐
ios::left			在串的末尾插入填充字符以使串居左对齐
ios::right			在串的前面插入填充字符以使串居右对齐
ios::boolalpha		将bool类型的值以true或flase表示,而不是10
ios::fixed			将符点数按照普通定点格式处理(非科学计数法)
ios::scientific		将符点数按照科学计数法处理(带指数域)
ios::showpoint		在浮点数表示的小数中强制插入小数点(默认情况是浮点数表示的整数不显示小数点)
ios::showpos		强制在正数前添加+号
ios::skipws			忽略前导的空格(主要用于输入流,如cin)
ios::unitbuf		在插入(每次输出)操作后清空缓存
ios::uppercase		强制大写字母
设置精度:cout<<setprecision(10) //精度为10,正常为6`  
恢复为6:cout<<setprecision(6);

例子

#include <iostream>
  #include <iomanip>
  using namespace std;
  int main() 
  { 
  cout<<12345.0<<endl;//输出"12345"
  cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;输出"1.234"
  cout<<setiosflags(ios::scientific)<<12345.0<<endl;//输出"1.234500e+004 "
  cout<<setprecision(3)<<12345.0<<endl;//输出"1.235e+004 "
  return 0; 
  }

作业
ex9

#include <iostream>
#include <iomanip>  //不要忘记包含此头文件主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文
using namespace std;
int main()
{
	double a=31.1;
	cout<<setw(8)<<setfill('*')<<resetiosflags(ios::dec)<<setiosflags(ios::hex)<<setiosflags(ios::fixed)<<10<<endl;
	//宽度为8 填充  清除格式化标志 设置 16进制  设置非科学计数法 之后输出10 
	cout<<setw(8)<<setfill('*')<<resetiosflags(ios::dec)<<setiosflags(ios::hex)<<resetiosflags(ios::fixed)<<setiosflags(ios::scientific)<<a<<endl;
	//宽度8 填充 清除10进制 设置16进制 取消科学计数法  设置科学计数法  输出a 
}

ex10
关于另一种输出方式不用<iosmanip>例:cout.setw9(10)

cout.setf(ios::left);//设置左对齐 
	cout.width(7);//宽度为7 
	cout.fill('#');//填充#
	cout.setf(ios::showpos);//强制加+号
#include <iostream>
using namespace std;//当不用<iomanip> 
int main()  
{
	cout<<"第一章"<<endl;//先输出 
	cout<<"	";//输出一个tab 
	cout.setf(ios::left);//设置左对齐 
	cout.width(7);//宽度为7 
	cout<<"1.1";
	
	cout<<"什么是c++";
	cout.unsetf(ios::left);//取消左对齐 ,为右对齐 
	cout.fill('.');
	cout.width(30);
	cout<<1<<endl;

	 cout<<"	";//一个tab 
	 cout.width(7);//符号位也算一个 
	 cout.setf(ios::left);
	 cout.fill('#');
	 cout<<"1.11";
	 
	 
	 cout<<"c语言历史";
	 cout.unsetf(ios::left);
	 cout.fill('%');
	 cout.width(30);
	 cout<<58<<endl;
	 cout.fill('^') ;
	 cout<<"第二章"<<endl; 
	 
	 
} 

/*#include <iomanip> 
#include <iostream>
using namespace std;
void main()  
{  
    cout<<"第一章"<<endl;  
    cout<<"    ";  
    cout<<setiosflags(ios::left)<<setw(7);        //设置宽度为7,left对齐方式  
    cout<<"1.1";  
    cout<<"什么是C语言";  
    cout<<resetiosflags(ios::left);                //取消对齐方式  
    cout<<setfill('.')<<setw(30)<<1<<endl;        //宽度为30,填充为’.’输出  
    cout<<setfill(' ');                            //恢复填充为空格  
    cout<<"    ";  
    cout<<setw(7)<<setiosflags(ios::left);        //设置宽度为7,left对齐方式  
    cout<<"1.11";  
    cout<<"C语言的历史";  
    cout<<resetiosflags(ios::left);                //取消对齐方式  
    cout<<setfill('.')<<setw(30)<<58<<endl;        //宽度为30,填充为’.’输出      
    cout<<setfill(' ')<<"第二章"<<endl;  
}*/

ex11
关于浮点数的格式
1.无云算子头文件

#include <iostream>//无运算子头文件 
using namespace std;
int main() 
{
	float f=2.0/3.0,f1=0.000000001,f2=9.9;
	cout<<f<<'	'<<f1<<'	'<<f2<<endl;//正常输入
	
	cout.setf(ios::showpos);//强制加+号
	cout<<f<<'	'<<f1<<'	'<<f2<<endl;
	
	cout.unsetf(ios::showpos);
	cout.setf(ios::showpoint);//强制显示小数点后无效的0
	cout<<f<<'	'<<f1<<'	'<<f2<<endl;
	
	cout.unsetf(ios::showpoint);
	cout.setf(ios::scientific);//科学计数法
	cout<<f<<'	'<<f1<<'	'<<f2<<endl;
	
	cout.unsetf(ios::scientific);
	cout.setf(ios::fixed);//按点输出显示 精度为6所以f1为0.000000 
	cout<<f<<'	'<<f1<<'	'<<f2<<endl;
	
	cout.unsetf(ios::fixed);
	cout.precision(10);//精度为10,正常为6 
	cout<<f<<'	'<<f1<<'	'<<f2<<endl;
	
	cout.precision(6);//精度恢复为6 
	 
}

关于浮点数的格式
2.有云算子头文件

#include <iostream>   
#include <iomanip>  
using namespace std;
void main()  
{  
    double f=2.0/3.0,f1=0.000000001,f2=-9.9;  
    cout<<f<<"\t"<<f1<<"\t\t"<<f2<<endl;      //正常输出  
    cout<<setiosflags(ios::showpos);      //强制在正数前加+号  
    cout<<f<<"\t"<<f1<<"\t\t"<<f2<<endl;  
    cout<<resetiosflags(ios::showpos);    //取消正数前加+号 positive 
    cout<<setiosflags(ios::showpoint);    //强制显示小数点后的无效0  
    cout<<f<<"\t"<<f1<<"\t"<<f2<<endl;    
    cout<<resetiosflags(ios::showpoint); //取消显示小数点后的无效0  
    cout<<setiosflags(ios::scientific);  //科学记数法  
    cout<<f<<"\t"<<f1<<"\t"<<f2<<endl;  
    cout<<resetiosflags(ios::scientific); //取消科学记数法  
    cout<<setiosflags(ios::fixed);        //按点输出显示  
    cout<<f<<"\t"<<f1<<"\t"<<f2<<endl;   
    cout<<resetiosflags(ios::fixed);      //取消按点输出显示  
    cout<<setprecision(10);              //精度为10,正常为6  
	cout<<setiosflags(ios::fixed);
    cout<<f<<"\t"<<f1<<"\t"<<f2<<endl;    
    cout<<setprecision(6);                //精度恢复为6  
}

猜你喜欢

转载自blog.csdn.net/qq_24654501/article/details/105027271
今日推荐