c++输入输出格式

1. 输入和输出8进制,10进制,16进制数
#include<iostream>
using namespace std;
int main()
{
	int number=25;
	//常量必须用dec、hex和oct来控制必须按10进制、16进制或8进制形式输出。
	//由于这三个标识符(dec/hex/oct)已经被定义为系统常量,注意不能在定义为其他变量名使用
	cout<<" 8进制: ";
	cout<<oct<<number<<endl;
	cout<<"10进制: ";
	cout<<dec<<number<<endl;
	cout<<"16进制: ";
	cout<<hex<<number<<endl;
	cout<<dec;  // 在cin或cout中指明数制后,该数制将一直有效,所以需要重新恢复输出10进制
	return 0;
}
//注意事项:
//1. cin 输入后面指明 数制 时键盘一定要按照进制形式输入。
//2. 使用不带.h的头文件<iostream>时,必须在cin中指明数制,否则从键盘输入时,不认八进制和十六进制数开头的0和0x标志。指明后可省略0和0x标志。
//3. 进制控制只适用于整型变量,不适用于实型和字符型变量。
//4. 输入数据的格式、个数和类型必须与cin中的变量一一对应,否则不仅使输入数据错误,而且影响后面其他数据的正确输入。
//5. 在cin或cout中指明数制后,该数制将一直有效,直到重新指明使用其他数制。
#include<iostream>
using namespace std;
int main()
{
	int octonary,decimalism,hexadecimal; // 代表8,10,16进制
	cout<<"输入8进制: ";
	cin>>oct>>octonary;    // 键盘输入的是八进制形式   032

	cout<<"输入10进制: ";
	cin>>dec>>decimalism;  // 键盘输入的是十进制形式   17

	cout<<"输入16进制: ";
	cin>>hex>>hexadecimal; // 键盘输入的是十六进制形式 0x3f
	
	cin>>dec;    在cin或cout中指明数制后,该数制将一直有效,所以需要重新恢复输入10进制
	return 0;
}
2. 数据间隔
#include <iostream>   //不要用iostream.h ,会出现好多问题

#include <iomanip>    // io 流控制头文件, 主要是一些操纵用法如setw(int n),setprecision(int n) ,setbase(int   n),setfill(char c)的.
setw

常用设置方法:输出空格符或回车换行符。
指定数据输出宽度:用C++提供的函数setw()指定输出数据项的宽度。setw()括号中通常给出一个正整数值,用于限定紧跟其后的一个数据项的输出宽度。如:setw(8)表示紧跟其后的数据项的输出占8个字符宽度。当设置宽度小于后面数值宽度时按照原数值宽度大小打印。

▲setw(n)用法: 通俗地讲就是预设宽度

#include<iostream>
#include<iomanip>  
using namespace std;
int main()
{
	cout<<"*";
	cout<<setw(5)<<666;
	cout<<"*"<<endl;     //   结果是:*  666*  即666前面由两个空格,共5个宽度

	cout<<"*";
	cout<<setw(5)<<666<<setw(6)<<999;   
	cout<<"*"<<endl;    //结果是:*  666   999*

	cout<<setw(2)<<12345<<endl;  //结果是:12345
	return 0;
}
setfill

▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充

#include<iostream>
#include<iomanip>  
using namespace std;
int main()
{
	cout<<setfill('#')<<setw(10)<<12345<<endl;  // 结果:#####12345
	cout<<setfill('@')<<setw(2)<<2555<<endl;    // 结果:2555 
	return 0; 
}
setbase

▲setbase(int n) : 将数字转换为 n 进制.

#include<iostream>
#include<iomanip>  
using namespace std;
int main()
{
    cout<<setbase(8)<<setw(5)<<255<<endl;     // (空格)(空格)377
    cout<<setbase(10)<<setw(5)<<255<<endl;    // (空格)(空格) 255
    cout<<setbase(16)<<255<<endl;			  // (空格)(空格) ff
	return 0; 
}
setprecision

使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。

在用浮点表示的输出中,setprecision(n)表示有效位数。
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。
在用定点表示的输出中,setprecision(n)表示小数位数。
第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。
在用指数形式输出时,setprecision(n)表示小数位数。
第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8。
▲ setprecision用法

#include<iostream>
#include<iomanip>  
using namespace std;
int main()
{
	double amount = 22.0/7;

    cout << amount << endl;									//结果是:3.14286

    cout << setprecision(0) << amount << endl               //结果是:3.14286
															
         << setprecision(1) << amount << endl				//结果是:3
														
         << setprecision(2) << amount << endl				//结果是:3.1

         << setprecision(3) << amount << endl				//结果是:3.14

         << setprecision(4) << amount << endl;				//结果是:3.143

    cout << setiosflags(ios::fixed);						

    cout << setprecision(8) << amount << endl;				//结果是:3.14285714

    cout << setiosflags(ios::scientific) << amount <<endl;  //结果是:0x1.92492492p+1

    //cout <<setprecision(6); //重新设置成原默认设置

	return 0; 
}
3. 其他参考
1.使用控制符控制输出格式
控制符 作用 
dec 设置整数的基数为10 
hex 设置整数的基数为16 
oct 设置整数的基数为8 
setbase(n) 设置整数的基数为n(n只能是16,10,8之一) 
setfill(c) 设置填充字符c,c可以是字符常量或字符变量 
setprecision(n) 设置实数的精度为n位.在以一般十进制小数形式输出时,n代表有效数字.在以fixed(固定小数位数)形式和scientific(指数)形式输出时,n为小数位数.
setw(n) 设置字段宽度为n位.
setiosflags(ios::fixed) 设置浮点数以固定的小数位数显示.
setiosflags(ios::scientific) 设置浮点数以科学计数法(即指数形式)显示.
setiosflags(ios::left) 输出数据左对齐.
setiosflags(ios::right) 输出数据右对齐.
setiosflags(ios::shipws) 忽略前导的空格.
setiosflags(ios::uppercase) 在以科学计数法输出E和十六进制输出字母X时,以大写表示.
setiosflags(ios::showpos) 输出正数时,给出“+”号.
resetiosflags 终止已设置的输出格式状态,在括号中应指定内容.
2.用流对象的成员控制输出格式
流成员函数 与之作用相同的控制符 作用 
precision(n) setprecision(n) 设置实数的精度为n位.
width(n) setw(n) 设置字段宽度为n位.
fill(c) setfill(c) 设置填充字符c.
setf( ) setiosflags( ) 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同.
ubsetf( ) resetiosflags( ) 终止已设置的输出格式状态.
cout.width(10); 
cout.setf(ios::hex);
3.设置格式状态的格式标志
格式标志 作用 
ios::left 输出数据在本域宽范围内左对齐 
ios::right 输出数据在本域宽范围内右对齐 
ios::internal 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充 
ios::dec 设置整数的基数为10 
ios::oct 设置整数的基数为8 
ios::hex 设置整数的基数为16 
ios::showbase 强制输出整数的基数(八进制以0打头,十六进制以0x打头) 
ios::showpoint 强制输出浮点数的小点和尾数0 
ios::uppercase 在以科学计数法输出E和十六进制输出字母X时,以大写表示 
ios::showpos 输出正数时,给出“+”号.
ios::scientific 设置浮点数以科学计数法(即指数形式)显示 
ios::fixed 设置浮点数以固定的小数位数显示 
ios::unitbuf 每次输出后刷新所有流 
ios::stdio 每次输出后清除stdout,stderr 
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值