C++常用格式化输出转换

简介: C++常用格式化输出转换


 在C语言中可以用printf以一定的格式打印字符,C++当然也可以。

输入输出及命名空间还不太了解的小伙伴可以看一看C++入门讲解第一篇

 在C++中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2个头文件(iomanipios)中,可以用输出运算符<<将一个操作符作用于输出流对象,即可输出该对象。

例如:

#include <iostream>
#include <stdbool.h>  
using namespace std;  
bool b = true;  
//两种输出如下
**cout << b << endl;** 
**cout << boolalpha << b << endl;**

运行后输出结果如下

1

true

 cout默认将bool类型的变量的值转化为0和1,如果在前边加上流操作符boolalpha,就以字符串“true”和“false”的形式输出bool类型变量的结果。


 在这里,ios头文件已经自动被iostream头文件包含,这个头文件中的操作符不带任何参数,就比如用以下操作符将整形以特定的进制格式输出。

oct:后续的生疏都以八进制的形式输出。
dec:后续的整数都以十进制的形式输出。
hex:后续的整数都以十六进制的形式输出。

举例:

cout << oct << 18 << '\t' << 25 << endl;
  cout << dec << 18 << '\t' << 25 << endl;
  cout << hex << 18 << '\t' << 25 << endl;

运行后输出结果如下

\t为制表符,如果在\t前没有八个字符,会自动补齐到8个。


还可以用如下操作符改变浮点数的输出格式

fixed:以固定精度形式输出。(保留小数点后5位)
scientific:已科学计数法的形式输出。(以科学计数法并保留小数点后6位,如果最后一个有效数字在0.1的级数上,就保留5位,即后边添加4个0)
hexfloat:以十六进制浮点数形式输出。
defaultflaot:以默认形式输出。

如:

int main()
{
  cout << 0.001 << endl;
  cout << defaultfloat << 0.001 << endl;
  cout << hexfloat << 0.001 << endl;
  cout << scientific << 0.001 << endl;
  cout << fixed << 0.001 << endl;
  return 0;
}

运行后如图

对比后发现,默认输出形式可以省略。


对比上边ios的操作符,iomanip的操作符往往需要传递一个参数。

setw(n):改变输出域的宽度。
setprecision(n):改变浮点数的精度
setfill(ch):改变填空字符,即如果输出域的宽度大于输出值的宽度时,默认的填空字符为空格,这里可以将其修改为任意字符。

setbase(b)也可以改变输出整数的进制,b=8或10或16。

要注意包含头文件iomanip


setw用法(只作用一次,用于下次输出)

 对于小数,只能识别小数后5位,小数点也会占用一格输出。如果数字长度不够,则会以空格向前填充。

一共7个字符,向前补齐一个空格。


setprecision用法

改变浮点数精度

包含整数部分。

保存从最高位向后n位数字。


setfill(ch)的用法

这里需要配合setw来使用。

用例如下:

正如前边所说,小数点也占用一格输出。

本文结束,希望大家有所收获。

目录
相关文章
|
1月前
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
556 1
|
1月前
|
算法 编译器 C++
【C++ 格式化输出 】C++ 高级输出格式化:掌握 iostream 与 iomanip
【C++ 格式化输出 】C++ 高级输出格式化:掌握 iostream 与 iomanip
119 1
|
1月前
|
Linux C++
vscode 如何修改c/c++格式化风格,大括号不换行
vscode 如何修改c/c++格式化风格,大括号不换行
|
7月前
|
iOS开发 C++
C++格式化输出
C++格式化输出
33 0
|
9月前
|
C语言 iOS开发 C++
C++ 的cout格式化输出
在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留 2 位小数,再比如以十六进制的形式输出整数,等等。 对于学过 C 语言的读者应该知道,当使用 printf() 函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如 %.2f 表示输出浮点数时保留 2 位小数,%#X 表示以十六进制、带 0X 前缀的方式输出整数。 关于 printf() 函数支持的格式控制符,更详细的讲解,可阅读《C语言数据输出大汇总》一节,这里不做详细赘述。 C++ 通常使用 cout 输出数据,和 printf() 函数相比,cout 实现格式化输出数据的方
66 0
|
11月前
|
安全 C++ 数据格式
C++ 字符串格式化转为 数据变量 - sscanf,sscanf_s及其相关用法
C++ 字符串格式化转为 数据变量 - sscanf,sscanf_s及其相关用法
165 0
|
C语言 C++
C/C++格式化输入与输出(位宽,左右对齐,%d,%f等)总结
C/C++格式化输入与输出(位宽,左右对齐,%d,%f等)总结
|
Unix C语言 iOS开发
C++cin,cout以及常见函数总结,cin,cout格式化控制
C++cin,cout以及常见函数总结,cin,cout格式化控制
C++cin,cout以及常见函数总结,cin,cout格式化控制
[VC++]用CTime类得到当前日期、时间、星期,格式化(详细讲解)
用CTime类得到当前日期、时间、星期,格式化(详细讲解)2009/05/12 09:48 A.M.① 定义一个CTime类对象 CTime time; ② 得到当前时间 time = CTime::GetCurrentTime(); ③ GetYear( ),GetMonth( ), GetD...
1552 0