【C++】输入输出流 ⑧ ( cout 输出格式控制 | 设置进制格式 - dex、hex、oct | 指定输出宽度 / 填充 - setw / setfill | 指定浮点数格式 )

这篇具有很好参考价值的文章主要介绍了【C++】输入输出流 ⑧ ( cout 输出格式控制 | 设置进制格式 - dex、hex、oct | 指定输出宽度 / 填充 - setw / setfill | 指定浮点数格式 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


指定输出格式 , 一般需要导入 <iomanip> 头文件 ;

#include "iostream"
using namespace std;
#include <iomanip> 




一、cout 输出格式控制




1、cout 输出格式控制的两种方式


在使用 cout 标准输出流 输出数据时 , 默认不指定 输出格式 , 系统会根据输出的类型 输出 默认的字符格式 ,


如果开发者希望指定数据的 输出格式 , 如 : 指定 十六进制 / 八进制 显示 , 小数点位数要求 等 ; 可以使用以下两种方式 指定 输出格式 :

  • 使用 cout 对象的 成员函数 指定输出格式 , 上一篇博客 【C++】输入输出流 ⑦ ( cout 标准输出流对象 | cout.write 函数 | cout.width / cout.fill / cout.setf 函数 ) 中 使用 cout.width / cout.fill / cout.setf 函数 就是指定 输出格式 ;
  • 使用 控制符 指定输出格式 , 本篇博客中着重讲解 ;

2、格式化输出 控制符


输出流 中 格式化输出 控制符 :

  • std::left : 左对齐 ;
  • std::right : 右对齐 ;
  • std::internal : 内部对齐 ;
  • std::dec : 使用十进制数 ;
  • std::hex : 使用十六进制数 ;
  • std::oct : 使用 八进制数 ;
  • std::showbase : 显示符号或前缀 ;
  • std::showpoint : 显示小数点后的 0 ;
  • std::showpos : 显示正号 ;
  • std::fixed : 固定精度 ;
  • std::scientific : 科学计数法 ;




二、指定输出进制 - dex、hex、oct




1、cout 输出进制设置


cout 输出进制设置 :

  • std::dec : 使用 十进制数 ;
  • std::hex : 使用 十六进制数 ;
  • std::oct : 使用 八进制数 ;

2、代码示例 - cout 输出进制设置


代码示例 :

#include "iostream"
using namespace std;

int main() {

	int a = 16;

	cout << "八进制 : " << oct << a << endl;
	cout << "十进制 : " << dec << a << endl;
	cout << "十六进制 : " << hex << a << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

八进制 : 20
十进制 : 16
十六进制 : 10
Press any key to continue . . .

c++ 输出hex,C++,c++,开发语言,cout,输入输出流,IO流


3、显示进制前缀 - showbase


八进制 通常是以 数字 0 开头 ;

十进制 是默认显示样式 , 前面没有前缀 ;

十六进制 前缀为 0x ;


默认情况下 是不显示 前缀的 , 使用 showbase 操作符 , 可以设置 输出格式 显示前缀 ;


代码示例 :

#include "iostream"
using namespace std;

int main() {

	int a = 16;

	cout << showbase;

	cout << "八进制 : " << oct << a << endl;
	cout << "十进制 : " << dec << a << endl;
	cout << "十六进制 : " << hex << a << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

八进制 : 020
十进制 : 16
十六进制 : 0x10
Press any key to continue . . .

c++ 输出hex,C++,c++,开发语言,cout,输入输出流,IO流


4、使用 setbase() 指定进制


<iomanip> 头文件中的 setbase() 函数 , 可以直接设置进制数 ; 原型如下 :

_NODISCARD _MRTIMP2 _Smanip<int> __cdecl setbase(int);

使用前需要导入 <iomanip> 头文件 ;


代码示例 :

#include "iostream"
using namespace std;
#include <iomanip> 

int main() {

	int a = 16;

	cout << showbase;

	cout << "八进制 : " << setbase(8) << a << endl;
	cout << "十进制 : " << setbase(10) << a << endl;
	cout << "十六进制 : " << setbase(16) << a << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

c++ 输出hex,C++,c++,开发语言,cout,输入输出流,IO流





三、指定输出宽度 / 填充 - setw / setfill




1、cout 指定输出宽度 / 填充


<iomanip> 头文件中的 setw() 函数 , 可以设置输出字符宽度 ; 原型如下 :

_NODISCARD _MRTIMP2 _Smanip<streamsize> __cdecl setw(streamsize);

<iomanip> 头文件中的 setfill() 函数 , 可以设置输出字符填充 , 如果输出字符宽度不够 , 使用该函数设置填充 ; 原型如下 :

// FUNCTION TEMPLATE setfill
template <class _Elem>
_NODISCARD _Fillobj<_Elem> setfill(_Elem _Ch) {
    return _Fillobj<_Elem>(_Ch);
}

使用前需要导入 <iomanip> 头文件 ;


2、代码示例 - cout 指定输出宽度 / 填充


代码示例 : 下面的代码中 , 设置输出字符个数 10 个 , 如果不够 10 个 , 使用 * 填充 ;

#include "iostream"
using namespace std;
#include <iomanip> 

int main() {

	char buf[] = "hello";

	cout << setw(10) << setfill('*') << buf << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

*****hello
Press any key to continue . . .

c++ 输出hex,C++,c++,开发语言,cout,输入输出流,IO流





四、指定浮点数格式 - setprecision / setiosflags




1、cout 指定浮点数格式


setprecision 函数的作用是 控制 浮点数 有效数字个数 , 如 : 浮点数 3.14 的 有效字符个数是 3 ; 函数原型如下 :

_NODISCARD _MRTIMP2 _Smanip<streamsize> __cdecl setprecision(streamsize);

setiosflags 函数可以设置 输出格式 , setiosflags(ios::scientific) 设置指数形式输出 ;

_NODISCARD _MRTIMP2 _Smanip<ios_base::fmtflags> __cdecl setiosflags(ios_base::fmtflags);

使用前需要导入 <iomanip> 头文件 ;

常见的输出格式如下 :

    static constexpr _Fmtflags skipws     = static_cast<_Fmtflags>(0x0001);
    static constexpr _Fmtflags unitbuf    = static_cast<_Fmtflags>(0x0002);
    static constexpr _Fmtflags uppercase  = static_cast<_Fmtflags>(0x0004);
    static constexpr _Fmtflags showbase   = static_cast<_Fmtflags>(0x0008);
    static constexpr _Fmtflags showpoint  = static_cast<_Fmtflags>(0x0010);
    static constexpr _Fmtflags showpos    = static_cast<_Fmtflags>(0x0020);
    static constexpr _Fmtflags left       = static_cast<_Fmtflags>(0x0040);
    static constexpr _Fmtflags right      = static_cast<_Fmtflags>(0x0080);
    static constexpr _Fmtflags internal   = static_cast<_Fmtflags>(0x0100);
    static constexpr _Fmtflags dec        = static_cast<_Fmtflags>(0x0200);
    static constexpr _Fmtflags oct        = static_cast<_Fmtflags>(0x0400);
    static constexpr _Fmtflags hex        = static_cast<_Fmtflags>(0x0800);
    static constexpr _Fmtflags scientific = static_cast<_Fmtflags>(0x1000);
    static constexpr _Fmtflags fixed      = static_cast<_Fmtflags>(0x2000);

    static constexpr _Fmtflags hexfloat = static_cast<_Fmtflags>(0x3000); // added with TR1 (not in C++11)

    static constexpr _Fmtflags boolalpha   = static_cast<_Fmtflags>(0x4000);
    static constexpr _Fmtflags _Stdio      = static_cast<_Fmtflags>(0x8000);
    static constexpr _Fmtflags adjustfield = static_cast<_Fmtflags>(0x01C0); // left | right | internal
    static constexpr _Fmtflags basefield   = static_cast<_Fmtflags>(0x0E00); // dec | oct | hex
    static constexpr _Fmtflags floatfield  = static_cast<_Fmtflags>(0x3000); // scientific | fixed

2、代码示例 - cout 指定浮点数格式


代码示例 :

#include "iostream"
using namespace std;
#include <iomanip> 

int main() {

	double pi = 22.0 / 7.0; 

	cout << "正常输出 : " << pi << endl;
	cout << "控制浮点数有效数字个数 8 位 : " << setprecision(8) << pi << endl;
	cout << "指数形式输出 且 保留小数点后 8 位 : " << setiosflags(ios::scientific) << setprecision(8) << pi << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

正常输出 : 3.14286
控制浮点数有效数字个数 8: 3.1428571
指数形式输出 且 保留小数点后 8: 3.14285714e+00
Press any key to continue . . .

c++ 输出hex,C++,c++,开发语言,cout,输入输出流,IO流文章来源地址https://www.toymoban.com/news/detail-854054.html

到了这里,关于【C++】输入输出流 ⑧ ( cout 输出格式控制 | 设置进制格式 - dex、hex、oct | 指定输出宽度 / 填充 - setw / setfill | 指定浮点数格式 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • fmt的格式化输入输出

    fmt 包是 Go 语言标准库中用于格式化输入和输出的包,它提供了丰富的函数来控制输出的格式,处理不同类型的数据,并且可以从输入源(如标准输入、文件)读取数据。下面将详细介绍 fmt 包的格式化输出和输入处理。 格式化输出 : fmt 包通过格式字符串来控制输出的格式

    2024年02月13日
    浏览(41)
  • C 风格文件输入/输出---无格式输入/输出---(std::fputc,std::putc,std::fputs)

    int fputc( int ch, std::FILE* stream ); int putc( int ch, std::FILE* stream ); 写入字符 ch 到给定输出流 stream 。 在内部,在写入前将字符转换为 unsigned char 。 C 中, putc() 可以实现为宏,而这在 C++ 中被禁止。从而调用 std::fputc() 和 std::putc() 始终拥有相同效果。 参数 ch - 要写入的字符 stream

    2024年02月09日
    浏览(36)
  • 【MATLAB】Matlab输入输出格式及矩阵运算

    我们来看一个例子,计算面积 Area= 可利用指令 input 在萤幕印出提示文字做为交谈式的输入。 r = input(\\\'Type radius:\\\')  % 在两个单引号 \\\' 之间键入提示文字 Type radius: % 现在键入 2 做为半径值 r = 2 area=pi*r^2; % 键入面积算式 name = input(\\\'Your name please: \\\',\\\'s\\\') % 要键入文字则须在加上 \\\'s\\\'

    2023年04月17日
    浏览(44)
  • 【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。

    目录 一.题目及答案 二.对该题目的分析及详解 三.对该题的举一反三 1.将十进制数对应的n进制数各位逆序,形成新的十进制输出 2.将十进制数转换成相应的n进制数输出 如图, 题目及答案如下 :  该程序 完整代码如下 (需要可自由复制): 以下是对该程序的分析: 先来看

    2024年02月05日
    浏览(59)
  • Python hex()十六进制转换

    Python hex() 函数用于将整数转换为以“0x”为前缀的小写十六进制字符串: 输出: 十六进制 到 十进制 使用 int() 函数 ,第一个参数是字符串 ‘0Xff’ ,第二个参数是说明,这个字符串是几进制的数。 转化的结果是一个十进制数。 二进制 到 十进制 八进制 到 十进制 其实可以看

    2024年02月11日
    浏览(49)
  • 格式化输入/输出(c语言超详细系列)(一)

    前言; Hello,大家好,我是心跳sy,今天我们主要讨论一下格式化输入/输出(一),包括printf,scanf的基本使用方法及注意事项、转换说明的简单理解以及转义序列的讲解,后续将持续带来对转换说明的深入研究以及输入缓冲的概念与文件相联系的知识,以及包括字符的输入输

    2024年02月13日
    浏览(46)
  • VS studio上查看标准cout输出

    在解决方案管理器中,单击选中项目后,点击菜单【视图】-【属性页】 在生成事件-生成后事件-命令行(Build Events-Post-Build Event-Command) Line)中增加 $(OutDir)$(ProjectName).exe 顾名思义,这个方法是在生成结束后,使用命令行执行生成的exe程序,暂且不说因运行环境问题程序能不能

    2024年04月12日
    浏览(29)
  • printf和scanf的串口重定向,格式化输入输出

    通过重定向C标准库的printf和scanf函数,实现串口的格式化输出; 调用MDK微库(MicroLib)的方法和调用标准库的方法。 我们使用的正点原子STM32F103RB NANO开发板上将USART1(引脚为PA9,PA10)接出 USART1并没有在PCB上连接在一起,需要通过跳线帽来连接一下。这里我们把 P5 的 RXD 和 TXD 用

    2024年02月04日
    浏览(55)
  • C++I/O流——(4)格式化输入/输出(第一节)

    归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝 含泪播种的人一定能含笑收获! 一起加油! 目录 前言:  用ios类成员函数实现格式化输入/输出: 1.控制输入/输出的

    2024年01月21日
    浏览(37)
  • C++I/O流——(4)格式化输入/输出(第二节)

    归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝 含泪播种的人一定能含笑收获! 一起加油!         格式化输出还可以使用控制符,这些控制符可以直接插入到输

    2024年01月18日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包