C++: I/O流详解(二)——输入输出格式控制
一、格式控制
ios提供直接设置标志字的控制格式函数
iostream和iomanip库还提供了一批控制符简化I/O格式化操作
状态标志 值 含义 输入/输出
skipws 0X0001 跳过输入中的空白 I
left 0X0002 左对齐输出 O
right 0X0004 右对齐输出 O
internal 0X0008 在符号位和基指示符后填入字符 O
dec 0X0010 转换基制为十进制 I/O
oct 0X0020 转换基制为八进制 I/O
hex 0X0040 转换基制为十六进制 I/O
showbase 0X0080 在输出中显示基指示符 O
showpoint 0X0100 输出时显示小数点 O
uppercase 0X0200 十六进制输出时一律用大写字母 O
showpos 0X0400 正整数前加“+”号 O
scientific 0X0800 科学示数法显示浮点数 O
fixed 0X1000 定点形式显示浮点数 O
unitbuf 0X2000 输出操作后立即刷新流 O
stdio 0X4000 输出操作后刷新stdout 和 stdree O
设置标识字:

例1:
//例10-4 设置输出宽度
#include <iostream.h>
void main()
{ char *s = "Hello";
cout.fill( '*' ) ; // 置填充符
cout.width( ) ; // 置输出宽度
cout.setf( ios :: left ) ; // 左对齐
cout << s << endl ;
cout.width( ) ; // 置输出宽度
cout.setf( ios :: right, ios :: left ) ; // 清除左对齐标志位,置右对齐
cout << s << endl ;
}
输出:

例二:不同基数形式的输入输出
#include <iostream.h>
void main()
{ int a , b , c ;
cout << "please input a in decimal: " ;
cin.setf( ios :: dec , ios :: basefield ) ; cin >> a ; //十进制输入
cout << "please input b in hexadecimal: " ;
cin.setf( ios :: hex , ios :: basefield ) ; cin >> b ; //十六进制输入
cout << "please input c in octal: " ;
cin.setf( ios :: oct , ios :: basefield ) ; cin >> c ; //八进制输入
cout << "Output in decimal :\n" ;
cout.setf( ios :: dec, ios :: basefield ); //十进制输出
cout << "a = " << a << " b = " << b << " c = " << c << endl ;
cout.setf( ios :: hex , ios :: basefield ) ; //十六进制输出
cout << "Output in hexadecimal :\n" ;
cout << "a = " << a << " b = " << b << " c = " << c << endl ;
cout.setf( ios :: oct , ios :: basefield ) ; //八进制输出
cout << "Output in octal :\n" ;
cout << "a = " << a << " b = " << b << " c = " << c << endl ;
}
输出:

例三:格式化输出浮点数
#include <iostream.h>
void main()
{ double x = 22.0/ ;
int i ;
cout << "output in fixed :\n" ;
cout.setf( ios::fixed | ios::showpos ) ; // 定点输出,显示 +
for( i=; i<=; i++ )
{ cout.precision( i ) ; cout << x << endl ; }
cout << "output in scientific :\n" ;
// 清除原有设置,科学示数法输出
cout.setf(ios::scientific, ios::fixed|ios::showpos ) ;
for( i=; i<=; i++ )
{ cout.precision(i) ; cout << x*1e5 << endl ; }
}

二、格式控制符
控制符是istream和ostream类定义了一批函数,作为重载插入运算符<<或提取运算符>>的右操作数控制I/O格式。


例1:
// 整数的格式化输出
#include <iostream>
#include <iomanip>
using namespace std ;
void main()
{ const int k = ;
cout << setw() << setfill('#') << setiosflags(ios::right) << k <<endl ;
cout << setw() << setbase() << setfill('*')
<< resetiosflags(ios::right) << setiosflags(ios::left) << k << endl ;
}
输出:

C++: I/O流详解(二)——输入输出格式控制的更多相关文章
- Java io流详解二
原文地址https://www.cnblogs.com/xll1025/p/6418766.html 一.IO流概述 概述: IO流简单来说就是Input和Output流,IO流主要是用来处理设备之间 ...
- Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)
View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇 ...
- 基于JavaSE阶段的IO流详解
1.IO流基本概述 在Java语言中定义了许多针对不同的传输方式,最基本的就是输入输出流(俗称IO流),IO流是属于java.io包下的内容,在JavaSE阶段主要学下图所示的: 其中从图中可知,所有 ...
- 爬虫入门之urllib库详解(二)
爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...
- StreamingContext详解,输入DStream和Reveiver详解
StreamingContext详解,输入DStream和Reveiver详解 一.StreamingContext详解 1.1两种创建StreamingContext的方式 1.2SteamingC ...
- .NET DLL 保护措施详解(二)关于性能的测试
先说结果: 加了缓存的结果与C#原生代码差异不大了 我对三种方式进行了测试: 第一种,每次调用均动态编译 第二种,缓存编译好的对象 第三种,直接调用原生C#代码 .net dll保护系列 ------ ...
- PopUpWindow使用详解(二)——进阶及答疑
相关文章:1.<PopUpWindow使用详解(一)——基本使用>2.<PopUpWindow使用详解(二)——进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ...
- Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
[Android布局学习系列] 1.Android 布局学习之——Layout(布局)详解一 2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数) 3.And ...
- logback -- 配置详解 -- 二 -- <appender>
附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...
- CSS布局之脱离文档流详解——浮动、绝对定位脱离文档流的区别
1.代码 (1)示例代码1 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=& ...
随机推荐
- Eclipse之Web工程探究以及格式化
1. 关于部署 只要配置了Web Deployment Assembly,可以不需要手工拷贝引用jar到/WEB-INF/lib里面了,之前失败是因为引用工程的output路径有问题导致的,修改完成后 ...
- Makefile 自动产生依赖 ***
代码如下: 其实这里主要是为每个C文件建立一个同名的后缀为.d.该文件的作用是使用gcc的-M属性来自动生成.o文件的头文件依赖关系. 第1,2,4都好理解. 第2行解释: 使用gcc -M 的属性将 ...
- winrm service
今天看脚本忽然发现一个服务,叫winRM服务,这是个PowerShell的远程管理.开启它可以很大程度的方便用PowerShell操控! 下面是我找到的一些资料: 在Linux中,我们可以使用安全的S ...
- eclipse插件安装(个人版)
1.Eclipse 安装反编译插件jadclipse http://jingyan.baidu.com/article/3f16e003c857082590c1036f.html 2.MyEclips ...
- iOS消息转发机制
iOS消息转发机制 “消息派发系统”(message-dispatch system) 若想令类能够理解某条消息,我们必须实现出对应的方法才行.但是,在编译器向类发送其无法解读的消息时并不会报错,因为 ...
- Python类(三)-多继承的区别
多继承的有两个方式,一个是广度优先,一个是深度优先Python2中经典类按深度优先,新式类按广度优先Python3中经典类和新式类都按广度优先 # -*- coding:utf-8 -*- __aut ...
- 2016.2.24 利用用户控件和委托完美解决快速选择txbbox
1.首先将tet_box和一个datagridview控件打包成用户控件uC_QuickTxtBox 2.在用户控件中定义执行主窗口的委托函数 3.主窗体中添加用户控件的load事件,赋值 uC_Qu ...
- rsync mac->windows openssh
rsync -azvP --progress -e "ssh -p 6666" /Users/codar/360\344\272\221\347\233\230/ghld/ rsy ...
- 自定义Android Studio方法注释模板
前言 你们从Eclipse转到Android Studio的时候,是不是会怀念Eclipse的方法注释模版? 敲/**加回车,模板就出来了,而Android Studio却不能自定义(或者我没有找到) ...
- 第二天:tomcat体系结构和第一个Servlet
1. 打war包 2. Tomcat体系再说明: 问题:如何去配置默认主机??? 3.tomcat和servlet在网络中的位置 4. servlet快速入门案例 1).开发s ...