**这些用法前最好用

#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. JAVA的String 类

    String类 1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s ...

  2. paml正选择处理时序列里有终止密码子怎么处理掉

     先用氨基酸序列进行比对,然后追溯回核苷酸序列,根据氨基酸序列的gap进行密码子去gap,这样不会出现终止子,能最大可能的保留其生物学意义 

  3. devexpress13学习系列(四)PDFViewer(4)

    PdfViewer的属性: CurrentPageNumber:显示当前页的页码. DocumentFilePath:当前文件. DocumentProperties:文件属性. PageCount: ...

  4. iOS 延迟执行

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), ...

  5. Leetcode: Convert a Number to Hexadecimal

    Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two's compl ...

  6. 转:python webdriver API 之对话框处理

    页面上弹出的对话框是自动化测试经常会遇到的一个问题:很多情况下对话框是一个 iframe,如上一节中介绍的例子,处理起来稍微有点麻烦:但现在很多前端框架的对话框是 div 形式的,这就让我们的处理变得 ...

  7. 20145207 《Java程序设计》第一周学习总结

    不好意思,来晚了   别的先不说,先道个歉,放假前跟娄老师多少发生点矛盾,望原谅. 假期忙实习还有一些其他事情,为了认真对待这门课,把剩下的时间留下来,争取一天一章来弥补. 由于没选课加上另一门课没开 ...

  8. docker gitlab

    Alternatively, you can manually launch the gitlab container and the supporting postgresql and redis ...

  9. spark使用Hive表操作

    spark Hive表操作 之前很长一段时间是通过hiveServer操作Hive表的,一旦hiveServer宕掉就无法进行操作. 比如说一个修改表分区的操作 一.使用HiveServer的方式 v ...

  10. [待解决] sudo unable to resolve host

    怪哉怪哉, 大debian突然就出现了这个问题 , 问题的现象是只要使用 sudo 执行命令就会出现 sudo unable to resolve host </etc/hostname中的内容 ...