C++ ostream 常用格式

C++程序设计语言(二)——标准输入输出 文章目录C++程序设计语言(二)——标准输入输出标准输入输出对象cout中的常用的方法iomanip库在输出格式中的应用 C++程序设计语言(二)——标准输入输出 C++语言提供了iostream库来表示输入流和输出流。它包含两个基本类型istream和ostream,分别表示输入流和输出流。 流(stream),随着时间的推移,字符是顺序生成或消耗的。 标准输入输出对象 标准库定义了4个IO对... 阅读详情


注意一点: std::setw只对下一个输出值有效,其他选项所有随后的输出都有效,比如:

case: std::cout << "[" << std::setw(6) << std::setfill('0') << "AAAA" << "BBBB" << "]";         // [00AAAABBBB]
可见"AAAA"被扩展成了6个字符宽度,而BBBB没有被扩展;因为std::setw只对紧跟着的输出有效, 即只对输出"AAAA"有效,而对"BBBB"输出无效。虽然std::setfill对输出"BBBB"还是有效的, 但是因为长度限定, "BBBB"的输出不需要padding也就看不出setfill起作用了,看下面case 2例子就明白。
case: std::cout << "[" << std::setw(6) << std::setfill('0') << "AAAA" << std::setw(6) << "BBBB" << "]"; // [00AAAA00BBBB]
可以看出setfill对所有的后续输出都有效。

1. setw: 设定下一个输出域的宽度
case: std::cout << "[" << std::setw(8) << "AAAA" << "]";        // [    AAAA]
设定域的输出长度为6,而实际字符串长度为4,所有前面补四个空格。
如果setw的数值小于实际数据长度,setw的值无效,比如上述例子:
case: std::cout << "[" << std::setw(3) << "AAAA" << "]"         // [AAAA]
因为3小于实际字符串长度4,最终输出整个字符串。

2. left/right/internal:在设定了输出域的宽度setw后,如果设置对齐方式,左对齐还是右对齐
case: std::cout << "[" << std::setw(8) << std::left << "AAAA" << "]";       // [AAAA    ]
case: std::cout << "[" << std::setw(8) << std::right << "AAAA" << "]";      // [    AAAA]
case: std::cout << "[" << std::setw(8) << "AAAA" << "]";                    // [    AAAA]
缺省是右对齐(std::right)
关于选项internal,在后面输出数字的时候再讨论;另外没有居中对齐这个选项。

3. setfill:域宽度不够时,还可以指定填充字符,用来代替缺省的空格
case: std::cout << "[" << std::setw(8) << std::setfill('0') << "AAAA" << "]"; // [0000AAAA]
使用字符'0'作为填充
case: std::cout << "[" << std::setw(8) << std::setfill('0') << std::left << "AAAA" << "]";    // [AAAA0000]

4. showpos:输出数字的正负号
case: std::cout << "[" << std::showpos << 123 << "]";   // [+123]
case: std::cout << "[" << std::showpos << -456 << "]";  // [-456]
case: std::cout << "[" << std::showpos << 0 << "]";     // [+0]

也可以指定数字域宽度setw
case: std::cout << "[" << std::showpos << std::setw(8) << 123 << "]";    // [    +123]
case: std::cout << "[" << std::showpos << std::setw(8) << -456 << "]";   // [    -456]
case: std::cout << "[" << std::showpos << std::setw(8) << 0 << "]";      // [      +0]

设定fill
case: std::cout << "[" << std::showpos << std::setw(8) << std::setfill('0') << 123  << "]";    // [0000+123]
case: std::cout << "[" << std::showpos << std::setw(8) << std::setfill('0') << -456 << "]";    // [0000-456]
case: std::cout << "[" << std::showpos << std::setw(8) << std::setfill('0') << 0    << "]";    // [000000+0]

这显然不是我们想要的结果,此时对齐方式中的internal就有用处了。
internal的定义是在符号位和数值之间填充
case: std::cout << "[" << std::showpos << std::setw(8) << std::setfill('0') << std::internal << 123  << "]";   // [+0000123]
case: std::cout << "[" << std::showpos << std::setw(8) << std::setfill('0') << std::internal << -456 << "]";   // [-0000456]
case: std::cout << "[" << std::showpos << std::setw(8) << std::setfill('0') << std::internal << 0    << "]";   // [+0000000]

5. 输出16进制数字值
case: std::cout << "[" << std::hex << 5  << "]";    // [5]
case: std::cout << "[" << std::hex << 10  << "]";   // [a]
case: std::cout << "[" << std::hex << 20  << "]";   //  [14]

能不能把长度限定为两个字节
case: std::cout << "[" << std::hex << std::setw(2) << 5  << "]";    // [ 5]
case: std::cout << "[" << std::hex << std::setw(2) << 10  << "]";   // [ a]
case: std::cout << "[" << std::hex << std::setw(2) << 20  << "]";   // [14]

前面空格用0来代替就好了
case: std::cout << "[" << std::hex << std::setw(2) << std::setfill('0') << 5  << "]";   // [05]
case: std::cout << "[" << std::hex << std::setw(2) << std::setfill('0') << 10  << "]";  // [0a]
case: std::cout << "[" << std::hex << std::setw(2) << std::setfill('0') << 20  << "]";  // [14]

能不能加前缀0x
case: std::cout << "[" << std::showbase << std::hex << std::setw(2) << std::setfill('0') << 5  << "]";  // [0x5]
case: std::cout << "[" << std::showbase << std::hex << std::setw(2) << std::setfill('0') << 10  << "]"; // [0xa]
case: std::cout << "[" << std::showbase << std::hex << std::setw(2) << std::setfill('0') << 20  << "]"; // [0x14]

可是为什么不能0x05, 0x0a, 0x14呢,因为setw(2)已经超出长度了,那如果设置setw(4)行不行啊
case: std::cout << "[" << std::showbase << std::hex << std::setw(4) << std::setfill('0') << 5  << "]";  // [00x5]
case: std::cout << "[" << std::showbase << std::hex << std::setw(4) << std::setfill('0') << 10  << "]"; // [00xa]
case: std::cout << "[" << std::showbase << std::hex << std::setw(4) << std::setfill('0') << 20  << "]"; // [0x14]

看来不行了,只能使用原始的笨办法
std::cout << "[" << "0x" << std::hex << std::setw(2) << std::setfill('0') << 5  << "]";     // [0x05]
std::cout << "[" << "0x" << std::hex << std::setw(2) << std::setfill('0') << 10  << "]";    // [0x0a]
std::cout << "[" << "0x" << std::hex << std::setw(2) << std::setfill('0') << 20  << "]";    // [0x14]

能不能16进制值(a-f)变大写
std::cout << "[" << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << 5  << "]";   // [05]
std::cout << "[" << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << 10  << "]";  // [0A]
std::cout << "[" << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << 20  << "]";  // [14]


深入理解C++流操作与文件处理技术 本文深入探讨了C++中流类的使用,包括输入流(istream)和输出流(ostream)类的常用函数及其参数。通过实际的代码示例,我们学习了如何格式化输入输出、处理输入错误以及如何操作文件。特别地,文章强调了错误处理的重要性,比如如何通过检查流的状态标志来避免输入错误导致的问题。此外,本文还讨论了预定义的流对象cin、cout、cerr和clog的用途,以及如何在程序中处理用户输入和文件输入输出的特定场景。 阅读详情

相关推荐

STM32F103ZET6驱动57闭环步进电机(连线+代码)

一、设备: 1. STM32F103开发板 (普中F103的板子) 2. 57闭环电机带驱动 3. 24V/3A的直流电源,用于给电机驱动供电 简单说明:使用Keil5编程,主要使用了PWM波,外部中断和时间中断,按键控制电机使能和脱机并且控制PWM的周期,调节周期即调节电机的转速。 二、STM32开发板与电机驱动的连线: 1.PUL-、ENA-、DIR-与STM32的连接方法: 可以参考CSND的这个链接中的说明,使用共阴极接法:STM32F407-用TB6600驱动器驱动57步进电机(代码

baidu_39071234的博客 7430

「小生杂记」指定长度整数,用0零填充

函数:setfill,setw 头文件:iomanip 格式:cout<<setfill('0')<<setw(x)<<n<<endl; //x是整数,是指定的整数位数 #include<iostream> #include<cstdio> #include<iomanip> using namespace std; int main() { int n; n=23; cout<..

fxb2292020220的博客 373

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略

在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设

weixin_42527654的博客 377

setw()、setfill()、setbase()、stringstream用法

说明:stringstream字符流, 可以将字符输出到string对象中,也可以通过stringstream::str()函数将字符串传给string对象,二者区别是,>>符号遇到空格就会结束字符串的传递不完整,但是stringstream::str()函数可以获得完整的字符串。

m0_55496896的博客 1090

openclaw + ollama本地模型 + 飞书平台 windows平台部署教程

本教程将指导您在 Windows 10/11 环境下,通过 Ollama 运行本地模型,并结合 OpenClaw 接入飞书,搭建一个完全本地化的 AI 助手。

专注于技术研发行业技术主要有AI人工智能视觉识别、物联网技术、电商平台、app原生技术、微信小程序、鸿蒙语言开发、办公企业oa、ERP等,致力于做东半球最优秀的程序员 2173

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

std::setw和std::setfill

std::setfill:设置std::setw将填充什么样的字符,如:std::setfill('*')std::setw :需要填充多少个字符,默认填充的字符为' '空格。std::setbase(n):将输出数据转换为n进制。std::setprecision():控制输出流显示。的数字个数,C++默认的流输出数值有效位是6。今天看到以下代码,看起来像是补齐。

z15f34的博客 763

旅行青蛙破解汉化教程——蹭个热度

汉化破解版资源(无尽三叶草与点券): https://github.com/wisdombyzf/lxqw/blob/master/lxqw_zf.apk 截图: 破解方法: 工具: 1,APKIDE https://www.pd521.com/thread-818-1-2.html 2,dnspy https://down.52pojie.

github_38838414的博客 3785

C++ 流控制函数setw()、setfill()、setbase()、setprecision()的使用

C++ 流控制函数

Never__give__up的博客 1615

压电传感器信号放大难题?用运放设计电荷放大器的5个关键步骤

本文详细解析了压电传感器信号放大难题,并提供了用运放设计电荷放大器的5个关键步骤。从电压放大到电荷放大的范式转换,到运放选型、反馈网络设计、PCB布局及频响特性验证,帮助工程师解决工业自动化中的信号衰减问题,提升测量精度和稳定性。

weixin_27303545的博客 447

Zabbix安装与部署 系统环境:centos7.0

Zabbix安装与部署 系统环境:centos7.0

weixin_42485027的博客 2600

C++ 头文件系列(ostream)

1. 简介 头文件ostream主要定义了一个输出流类模版basic_ostream,该模版继承自basic_ios模版。 2. basic_ostream模版 2.1 sentry类 与basic_istream模版一样,basic_ostream也定义了一个sentry类,详见basic_istream::sentry。 2.2 流定位函数 seekp : 定位到指定位置。 tellp : ...

weixin_30588729的博客 1405

ABAP 里解构引用操作符 ->* 的使用方法详解

解除引用操作符->*可用于将“类型为REF TO …的引用变量”的值(即该引用所指向内存)取出,从而访问其实际值或内部组件。具体地,若dref是一个“引用变量”,则表达式dref->*代表对该引用进行“解除引用”,使得程序按静态类型将其视为实际类型的值对象。例如,若lr类型声明为,则lr->*表示“将 lr 引用的INT4对象看作INT4类型并访问其值”。注:若 “数据引用变量” 的静态类型是通用类型DATA,则只能在这种上下文中使用->*。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 480

C++之istream与ostream

istream istream类定义了许多用于从流中提取数据和操作文件的成员函数,并对流的析取运算符>>进行了重载,实现了对内置数据量的输入功能 其中常用的几个成员函数是get、getline、read 、ignore ostream ostream类提供了许多用于数据输出的成员函数,并通过流的输出<<重载,实现了对内置数据类型的输出功能。 其中几个常用的成员函数是put、write、flush 输入输出的格式控制 C语言中可以使用scanf()和printf()实现数据的格式化输入输出,

陈小陈的博客 672

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

c++cout输出函数的格式控制

表 1 罗列了 ostream 类中可实现格式化输出的常用成员函数,以及它们各自的用法。 表 1 ostream 类的成员方法 成员函数 说明 flags(fmtfl) 当前格式状态全部替换为 fmtfl。注意,fmtfl 可以表示一种格式,也可以表示多种格式。 precision(n) 设置输出浮点数的精度为 n。 width(w) 指定输出宽度为 w 个字符。 fill(c) 在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是...

admin的博客 610

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++ IO库,再也不用担心cout格式化输出了

C++ IO库 条件状态 文件流对象 格式化输入输出

YiHeboy的博客 800

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C++_chapter10_C++IO流类库

数据的输入和输出(input/output简写为I/O);对标准输入设备和标准输出设备的输入输出简称为标准I/O;对在外存磁盘上文件的输入输出简称为文件I/O;对内存中指定的字符串存储空间的输入输出简称为串I/O;数据输入输出的过程,可以形象地看成流。从流中获取数据的操作称为“提取”(输入)操作,cin >> n;箭头指向n,所以为输入。向流中添加数据的操作称为“插入”(输出)操作 ,cout << n, 箭头指向输出,所以为输出。标准输入输出流;文件流字符串流。

weixin_43916755的博客 694

C++ 常用流类

<think>我们是由AI助手,需要根据用户提供的关于C++头文件的分类的内容,生成不超过150字的文章摘要。用户要求“根据以下内容,生成≤150字的文章摘要”。我们需要提炼核心要点,简洁概括。 首先,理解内容:主要讲C++中三类头文件:iostream(标准IO流)、fstream(文件流)、sstream(字符串内存流)。提及了istream/ostream、cin/cout/cerr/clog,继承关系,文件流的打开模式、指针、seekg/tellg,字符串流的应用等。 摘要应简明扼要,涵

keyipatience的博客 225

C++ 笔记 | 第8课 流类库的输入与输出

C++ 笔记 | 第8课 流类库的输入与输出 文章目录C++ 笔记 | 第8课 流类库的输入与输出输出流ostream 通用输出流类 (标准输出)ofstream 输出文件流类 (向文件输出)打开文件的四种方式iosmode常用输出流成员函数open()close()如 `of.close();` `ofp->close();`put()write()seekp()和 tellp()pos 取值flush()clear()`clear()` 清除 (复位) 所有错误标记位,包括:`goodbit`,

yxj的博客 690

【STL】iostream编程:iostreams 约定

本文介绍了C++标准库中iostream系列头文件的规范及用途。该系列主要负责文本编码转换和文件读写,包含<fstream>、<iostream>、<sstream>等10个头文件。其中<iostream>提供基础控制台I/O(cin/cout),<fstream>支持文件读写,<sstream>处理字符串流,<iomanip>提供格式控制。其余头文件如<ios>、<streambuf>多为底层组件,通常仅在高阶开发中使用。文章还提供了速查表,清晰列出各头文件的核心功能和使用场景。

呆瓜的博客 178

【一天一个计算机知识】—— 【ostream类】C++程序如何“说话”?一步步为你搭建通往ostream的桥梁

本文介绍了C++标准库中的ostream类,它是处理输出流的核心组件。文章从ostream在I/O体系中的核心地位切入,重点解析了其三类成员函数:格式化输出(operator<<)、非格式化输出(put/write)和流状态管理(flush/seekp)。特别强调了ostream作为参数和返回值时的引用传递特性,以及如何为自定义类型重载<<运算符。通过代码示例展示了ostream的灵活应用,包括兼容不同输出流和二进制数据操作。

枫亭湖区的博客 1397

C++ iostream、ostream、istream等标准库都是什么?看完这篇就知道了

我们在写C++代码的时候,总会用到 `iostream` 库,这是C++的标准库,几乎每个程序都会用到它(有一些人则会用 `cstdio` )。我们细扒出来 `iostream` 库的源码,却发现 `iostream` 库里面几乎都是 `include` 、预处理、`extern` 、`namespace` 这些东西,其中还有引入 `ios` 、`ostream` 、`istream` 、`streambuf` 等头文件。这又是什么呢?本文就为大家揭秘一下。首先先说最常用的 `iostream` 库。...

YoungGeeker 1万+

C++ ostream:从基础输出到自定义类型序列化

本文深入探讨了C++中ostream的使用,从基础输出到自定义类型的序列化。详细介绍了ostream家族成员、输出操作符重载机制、格式化控制方法,以及如何优雅地实现自定义类型的输出。同时涵盖了stringstream、文件输出流等高级应用,并提供了性能优化和线程安全的实用建议。

weixin_34211761的博客 713

C++语法基础--ostream,cout及其格式控制,缓冲区

1.C++程序把输入和输出看作字节流:输入时,程序从输入流中抽取字节;输出是,程序将字节插入到输出流中。流充当了程序和流源或流目标之间的桥梁。 2.缓冲区是用作中介的内存块,它将信息从设备传输到程序或从程序传输给设备的临时存储工具。 3.在程序中包含iostream文件将自动创建8个流对象(4个窄字符流,4个宽字符流)   cin对象对应于标准输入流  wcin与cin类似,但处理的

piniheaven的专栏 4876

C++之 ostream详细用法

在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直接使用cout。那么 ostream 有什么用呢,来看一个场景: [url=][/url]1classCPoint2{3public:4 CPoint(intx_,inty_):x(x_),y(y_){...

xiaoyaGrace的博客 2220
上一篇: COBOL Decimal Numbers
下一篇: C++ std::string能否存储二进制字符
假装80后
博客等级 码龄19年 28粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值