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=& ...
随机推荐
- 关于DO、VO的一些新的认识
今天在开发前的定案以及业务介绍过程中,讲到了一些关于VO和DO的知识和理解. 听到之后就觉得很惊奇,也或许是自己以前不够深入理解开发的过程.认知的很浅薄. DO VO以前的认知里面,都是一样的,都属于 ...
- 接口方式[推荐]/动态SQL语句
MVC目录结构: Src -- com.shxt.servlet[控制层] --com.shxt.service[业务逻辑层] --com.shxt.model[实体Bean,用来承载数据] --co ...
- POJ1020(小正方形铺大正方形)
Anniversary Cake Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16579 Accepted: 5403 ...
- $timeout()定时器
非常不幸的一点是,人们似乎常常将AngularJS中的$timeOut()函数看做是一个内置的.无须在意的函数.但是,如果你忘记了$timeOut()的回调函数将会造成非常不好的影响,你可能会因此遇到 ...
- Java多线程中的常用方法
本文将带你讲诉Java多线程中的常用方法 Java多线程中的常用方法有如下几个 start,run,sleep,wait,notify,notifyAll,join,isAlive,current ...
- Spring MVC F5刷新问题
转自:https://bbs.csdn.net/topics/390771056 post操作成功后重定向到B,这样浏览器里F5的时候就不会让提交A了
- LAMP 3.0 mysql配置讲解
mysql 安装好后,我们是从安装包的 support-files 里面复制过来一个模板配置文件,默认 mysql 配置文件是在/etc/my.cnf 下,其实这个路径或者文件名字我们是可以修改的,在 ...
- OpenGL 着色器 03
着色器(shader)是运行在GPU上小程序. 也是一种非常独立的程序,它们之间不能相互通信:它们之间唯一的沟通只有通过输入和输出. 着色器的开头总是要声明版本,接着是输入和输出变量,uniform和 ...
- 百度地图SDK v2.1.2使用方法
1.开发工具 Android开发工具有很多,开发者可根据自己的喜好进行选择.在此,我们推荐开发者使用Eclipse作为自己的开发工具,本套开发指南也是针对Eclipse开发环境下进行编写的. 2.工程 ...
- C语言获取系统时间
localtime函数 #include <stdio.h> #include <time.h> int main () { time_t t; struct tm *lt; ...