输出流的格式化

输出流的格式化要从两个方面来实现:

一、流操纵算子

数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符。把它们作为插入操作符<<的输出对象即可。如setiosflags、setw、setfill、setprecision、hex、oct等

#include <iostream>
#include <iomanip>
using namespace std;

//通过操作子的方式进行格式化输出
//宽度控制
//对齐控制
// 填充控制
// 精度控制
// 进制控制
//

int main()
{
	system("chcp 936");
	int n=64;
	double d=123.45;
	double d1=0.012345;

	cout<<"========宽度控制=================="<<endl;
	cout<<n<<'#'<<endl;
	cout<<setw(10)<<n<<'#'<<n<<endl;//宽度控制不会影响下一个输出

	cout<<"========对齐控制=================="<<endl;

	cout<<setw(10)<<setiosflags(ios::left)<<n<<'#'<<endl;//对齐控制会影响下一个输出
	cout<<setw(10)<<n<<'#'<<endl;

	/*cout<<setw(10)<<setiosflags(ios::right)<<n<<'#'<<endl;*///还原对齐方式
	cout<<setw(10)<<resetiosflags(ios::left)<<n<<'#'<<endl;

	cout<<"========填充控制=================="<<endl;

	cout<<setw(10)<<setfill('?')<<n<<'#'<<endl;//填充控制会影响下一个输出
	cout<<setw(10)<<n<<'#'<<endl;
	cout<<setw(10)<<setfill(' ')<<n<<'#'<<endl;///还原原来的填充控制方式

	cout<<"========精度控制=================="<<endl;

      cout<<setprecision(4)<<d<<endl;    //设置有效数字
	  cout<<setprecision(3)<<d1<<endl;

	  cout<<setiosflags(ios::fixed)<<endl;//设置小数点后的有效数字

	  cout<<setprecision(4)<<d<<endl;
	  cout<<setprecision(3)<<d1<<endl;

	  cout<<"========进制输出=================="<<endl;
	/*  cout <<n<<endl;
	  cout<<resetiosflags(ios::dec);
	  cout<<setiosflags(ios::oct)<<n<<endl;
	  cout<<hex<<n<<endl;
	  */
	   cout<<endl;
	    cout<<n<<endl;
	    cout<<oct<<n<<endl;
	    cout<<hex<<n<<endl;

		cout<<endl;
		cout<<setiosflags(ios::showbase)<<endl;//在进制前加上进制符号
		cout<<dec<<n<<endl;
		cout<<oct<<n<<endl;
		cout<<hex<<n<<endl;

		cout<<endl;
		cout<<setbase(10)<<n<<endl;
		cout<<setbase(8)<<n<<endl;
		cout<<setbase(16)<<n<<endl;

	return 0;
}

二、通过流的成员函数实现

通过调用流的成员函数控制格式,如setf、unsetf、width、fill、precision等。优点是在设置格式同时,可以返回以前的设置,便于恢复原来的设置。

ios类提供成员函数对流的状态进行检测和进行输入输出格式控制等操作

ios类的成员函数:

#include <iostream>
//#include <iomanip>
using namespace std;

//通过流的成员函数进行格式化输出
//宽度控制
//对齐控制
// 填充控制
// 精度控制
// 进制控制
//

int main()
{
	system("chcp 936");
	int n=64;
	double d=123.45;
	double d1=0.012345;

	cout<<"========宽度控制=================="<<endl;
	cout<<n<<'#'<<endl;
	//cout<<setw(10)<<n<<'#'<<n<<endl;//宽度控制不会影响下一个输出
	cout.width(10);
	cout<<n<<'#'<<endl;

	cout<<"========对齐控制=================="<<endl;
	cout.width(10);
	cout.setf(ios::left);
	cout<<n<<'#'<<endl;
	cout.width(10);
	cout<<n<<'#'<<endl;
	//还原对齐方式
	/*cout.width(10);
	cout.setf(ios::right);
	cout<<n<<'#'<<endl;*/
	cout.width(10);
	cout.unsetf(ios::left);
	cout<<n<<'#'<<endl;

	cout<<"========填充控制=================="<<endl;
	cout.width(10);
	cout.fill('?');
	cout<<n<<'#'<<endl;

	cout.width(10);	//填充控制会影响下一个输出
	cout<<n<<'#'<<endl;

	cout.width(10);
	cout.fill(' ');
	cout<<n<<'#'<<endl;//还原原来的填充控制方式

	cout<<"========精度控制=================="<<endl;

	cout.precision(4); //设置有效数字
	cout<<d<<endl;
	cout.precision(3);
	cout<<d1<<endl;

	  cout.setf(ios::fixed);//设置小数点后的有效数字
	  cout.precision(4); //
	  cout<<d<<endl;
	  cout.precision(3);
	  cout<<d1<<endl;;

	  cout<<"========进制输出=================="<<endl;
	  cout<<n<<endl;
	  cout.unsetf(ios::dec);
	  cout.setf(ios::oct);
	  cout<<n<<endl;
	   cout.unsetf(ios::oct);
	  cout.setf(ios::hex);
	  cout<<n<<endl;

	  cout.setf(ios::showbase);
	  cout<<n<<endl;
	  cout.unsetf(ios::hex);
	  cout.setf(ios::oct);
	  cout<<n<<endl;
	   cout.unsetf(ios::oct);
	  cout.setf(ios::hex);
	  cout<<n<<endl;

	  cout.unsetf(ios::showbase);
	  cout<<n<<endl;
	  return 0;
}

补充下知识:ios类中的枚举常量

输出流的格式化

时间: 2024-10-08 20:50:28

输出流的格式化的相关文章

输出流格式化

如果某些控制台不支持中文显示,可以在代码最前面加上代码system("chcp 936"); /*宽度控制,对齐控制,填充控制,精度控制,进度输出;*/ 一.操纵子方式格式化 set(int): cout << setw(10) << n <<'#'<< endl;意义是在控制以10个字符为单位进行右对齐.宽度控制不会影响下一个输出. setiosflags(ios::left/right) 进行左对齐或者右对齐.它会影响流的状态,下一次

输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

Java输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

java输入输出流总结 转载

一.基本概念 1.1 什么是IO?     IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作.     Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.      任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法.Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO.    

【转载】Java输入输出流-IO

转自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核

Java的IO输入输出流类的介绍(有图)

一.字节流 1.InputStream/OutputStream(输入流与输出流几乎一一对应) 读取的方法   int read()   int read(byte[] buffer)   int read(byte[] buffer,int offset,int length) 2.各种类的区分,常用的9种(按处理的基本单位划分) 2.1.以字节数组为颗粒(颗粒就是基本单位的意思) ByteArrayInputStream 2.2.以文件为颗粒 FileInputStream 2.3.管道流(

Java输入输出流的使用详细介绍

出处:http://www.jb51.net/article/36138.htm 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用

Java 输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

【JAVA I/O】字符输出流Writer简要概括

偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异: 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说,每个字符输出流类都有一个对应的用途,如下: 字符输出流基类:Writer 字节流转字符流:OutputStreamWriter              //往字节输出流中写字符 字符文件写入相关:FileWriter                          //往文件中写字符 字符数组