**这些用法前最好用

#include <iostream>    //不要用iostream.h ,会出现好多问题

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

//,setbase(int   n),setfill(char c)的.

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

如 cout<<setw(5)<<255<<endl;

结果是:

(空格)(空格)255

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

如 cout<<setfill('@')<<setw(5)<<255<<endl;

结果是:

@@255

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

如 cout<<setbase(8)<<setw(5)<<255<<endl;

cout<<setbase(10)<<setw(5)<<255<<endl;

cout<<setbase(16)<<255<<endl;

结果是:

(空格)(空格)377

(空格)(空格) 255

(空格)(空格) f f

▲ setprecision用法

使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。

如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。

如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。

例如,下面的代码分别用浮点、定点和指数方式表示一个实数:

#include <iostream.h>

#include <iomanip.h> //要用到格式控制符

void main()

{

double amount = 22.0/7;

cout <<amount <<endl;

cout <<setprecision(0) <<amount <<endl

<<setprecision(1) <<amount <<endl

<<setprecision(2) <<amount <<endl

<<setprecision(3) <<amount <<endl

<<setprecision(4) <<amount <<endl;

cout <<setiosflags(ios::fixed);

cout <<setprecision(8) <<amount <<endl;

cout <<setiosflags(ios::scientific)

<<amount <<endl;

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

}

运行结果为:

3.14286

3

3

3.1

3.14

3.143

3.14285714

3.14285714e+00

该程序在32位机器上运行通过。

在用浮点表示的输出中,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

setw(n)是设置域宽。

就是你的输出要占多少个字符

比如:

cout<<setw(5)<<12345<<endl;

就输出

12345

cout<<setw(6)<<12345<<endl;

输出

12345

而如果你要输出的字符宽度超出了setw(n)的n值,就按输出字符的宽度输出。

如你的cout<<setw(4)<<12.3456<<endl;

就输出12.3456

I/O流常用控制符:

使用控制符时,在程序开头加投文件#include <iomanip>

C++有两种方法控制格式输出:1、用格式控制符;2、用流对象的成员函数

格式控制符:

dec                                设置基数为10

hex                                设置基数为16

oct                                设置基数为8

setfill(c)                         设置填充字符c

setprecision(n)                    设置显示小数精度为n位

setw(n)                               设置域宽为n个字符

setiosflags(ios::fixed)                     固定的浮点显示

setiosflags(ios::scientific)                 指数表示

setiosflags(ios::left)                  左对齐

setiosflags(ios::right)                 右对齐

setiosflags(ios::skipws)               忽略前导空白

setiosflags(ios::uppercase)             16进制数大写输出

setiosflags(ios::lowercase)             16进制小写输出

成员函数:

flags(10)                           设置基数为10

flags(16)                           设置基数为16

flags(8)                            设置基数为8

flags(c)                            设置填充字符c

precision(n)                        设置显示小数精度为n位

width(n)                            设置域宽为n个字符

控制符和流成员函数相对应,它们用法不同,但是作用相同。

注意!!:setw(n)和width(n)是不持续的。即它们只作用于与它后面相邻的域或对象,在下一个域或对象时就回到原来的默认值。

setprecision(int n)等格式函数用法 分类: POJ 2015-06-11 10:56 17人阅读 评论(0) 收藏的更多相关文章

  1. C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏

    1.     概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...

  2. C/C++中const的用法 分类: C/C++ 2015-07-05 00:43 85人阅读 评论(0) 收藏

    const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结 ...

  3. SQL string类型的数据按int类型排序 分类: SQL Server 2014-12-08 16:56 393人阅读 评论(0) 收藏

    说明: 我在做wms进销存软件时,发现一个问题:一张入库单(T_OutIn_BoxTop),入库扫描时要分成多箱,箱号(BoxTop_No)可以是数字也可以是字符串,所以箱号只能是字符串类型的,问题来 ...

  4. 博弈论入门小结 分类: ACM TYPE 2014-08-31 10:15 73人阅读 评论(0) 收藏

    文章原地址:http://blog.csdn.net/zhangxiang0125/article/details/6174639 博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策 ...

  5. C#多线程(下) 分类: C# 线程 2015-03-09 10:41 153人阅读 评论(0) 收藏

    四.多线程的自动管理(线程池) 在多线程的程序中,经常会出现两种情况: 一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPool(线 ...

  6. __int64 与long long 的区别 分类: Brush Mode 2014-08-14 10:22 64人阅读 评论(0) 收藏

    //为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int    ...

  7. C#多线程(上) 分类: C# 线程 2015-03-09 10:35 174人阅读 评论(0) 收藏

    一.多线程的相关概念 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源. 而一个进程又是由多个线程所组成的. 什么是线程? 线程是程序中的一个执行 ...

  8. C/C++文字常量与常变量的概念与区别 分类: C/C++ 2015-06-10 22:56 111人阅读 评论(0) 收藏

    以下代码使用平台是Windows 64bits+VS2012. 在C/C++编程时,经常遇到以下几个概念:常量.文字常量.符号常量.字面常量.常变量.字符串常量和字符常量,网上博客资料也是千篇千律,不 ...

  9. 多校3- RGCDQ 分类: 比赛 HDU 2015-07-31 10:50 2人阅读 评论(0) 收藏

    RGCDQ Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Practic ...

随机推荐

  1. J2EE sitemesh使用

    maven包含sitemesh: <dependency> <groupId>opensymphony</groupId> <artifactId>si ...

  2. UVa10023手动开大数平方算法

    题目链接:UVa 10023 import java.math.BigInteger; import java.util.Scanner; public class Main { public sta ...

  3. C#: PerformanceCounter的使用

    在实际编程中,有的时候需要密切注意CPU, Memory的变化.这个时候需要用到PerformanceCounter这个类,注意需要using System.Diagnostics; 这里只是在con ...

  4. C++之路起航——标准模板库(set)

    set(集合):http://baike.baidu.com/link?url=cb68AB-3qfEK8RoaGHJFClb4ZiWpJfc32lPOLtaNUrdxntFC738zCZsCiUlf ...

  5. springday02-go2

    1.复制xml文件到container.auto下2.Waiter类实现构造函数3.Bar类中Waiter作为其成员变量,并实现其get/set方法,有参和无参构造器,toString方法4.分别修改 ...

  6. Android中实现app版本更新

    1,获取本地程序apk版本,并开启服务(下面这段代码一般在主Activity中的onCreate()方法中执行的,并开启后台服务下载新版本的apk) //获取apk包文件的管理者对象 PackageM ...

  7. paper 50 :人脸识别简史与近期进展

    自动人脸识别的经典流程分为三个步骤:人脸检测.面部特征点定位(又称Face Alignment人脸对齐).特征提取与分类器设计.一般而言,狭义的人脸识别指的是"特征提取+分类器"两 ...

  8. paper 3:matlab中save,load使用方法小结

    功能描述]存储文件[软件界面]MATLAB->File->Save Workspace As将变量存入硬盘中指定路径.[函数用法] save:该函数将所有workspace中变量用二进制格 ...

  9. Oracle重置序列(不删除重建方式)

    Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译. 不过还有种巧妙的方式,不用删除,利用步长参数,先查出seque ...

  10. EBS fnd_global.apps_initialize

    原型:fnd_global.apps_initialize(user_ID,                                             Responsibility_id ...