c++11 标准模板(STL)(std::basic_ostream)(八)

news2024/12/23 18:26:49
定义于头文件 <ostream>
template<

    class CharT,
    class Traits = std::char_traits<CharT>

> class basic_ostream : virtual public std::basic_ios<CharT, Traits>

类模板 basic_ostream 提供字符流上的高层输出操作。受支持操作包含有格式输出(例如整数值)和无格式输出(例如生字符和字符数组)。此功能以 basic_streambuf 类所提供的接口实现,通过 basic_ios 基类访问。典型的实现中, basic_ostream 无非继承的数据成员。

非成员函数

插入字符数据

operator<<(std::basic_ostream)
template< class CharT, class Traits>

basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,

                                         CharT ch );
template< class CharT, class Traits>

basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,

                                         char ch );
template< class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

                                        char ch );
template< class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

                                        signed char ch );
template< class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

                                        unsigned char ch );
template< class CharT, class Traits >

basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,

                                         const CharT* s );
(2)
template< class CharT, class Traits >

basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os,

                                         const char* s );
template< class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,  

                                        const char* s );
template< class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

                                        const signed char* s );
template< class Traits >

basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,

                                        const unsigned char* s );
template< class CharT, class Traits, class T >

basic_ostream< CharT, Traits >& operator<<( basic_ostream<CharT,Traits>&& os,

                                            const T& value );
(3)(C++11 起)

插入字符或字符串。

1) 表现如有格式输出函数 (FormattedOutputFunction) 。在构造并检查 sentry 对象后,插入字符 ch 。若字符类型不是 CharT ,则它首先以 os.widen(ch) 转换。按下列方式确定填充:若 os.width()>1 ,则添加 os.width()-1os.fill() 的副本到输出字符,以组成输出字符序列。 若 (out.flags()&std::ios_base::adjustfield) == std::ios_base::left ,则填充字符被置于输出字符之后,否则在之前。插入前,调用 os.width(0) 以取消 std::setw 的效果,若它存在。

2) 表现如有格式输出函数 (FormattedOutputFunction) 。在构造并检查 sentry 对象后,插入来自首元素为 s 所指向的字符数组的相继字符。

  • 对于第一和第三重载(其中 CharT 匹配 ch 的类型),准确插入 traits::length(s) 个字符。
  • 对于第二重载,准确插入 std::char_traits<char>::length(s) 个字符。
  • 对于最后二个重载,准确插入 traits::length(reinterpret_cast<const char*>(s)) 个字符。

在插入前,首先,用 os.widen() 加宽所有字符,然后按下列方式确定填充:若要插入的字符数少于 os.width() ,则添加足够数量的 os.fill() 副本到字符序列,以令其长等于 os.width() 。若 (out.flags()&std::ios_base::adjustfield) == std::ios_base::left ,则添加填充字符到输出序列的末尾,否则添加它们到序列之前。 在插入后,调用 width(0) 取消 std::setw 的效果,若它存在。

s 为空指针则行为未定义。

3) 给定到输出流对象的右值引用,调用适当的插入运算符(等价于 os << value )。此函数不参与重载决议,除非表达式 os << value 为良式。 (C++17 起)

参数

os-要插入数据的输出流
ch-要插入的字符
s-指向要插入的字符串的指针

返回值

os

注意

LLVM libc++ 中的重载 (3) 实现 LWG#1203 并返回与参数相同的类型,故如 (std::ostringstream() << 1.2).str() 的代码可以编译。

 调用示例

#include <iostream>
#include <fstream>

int main()
{
    std::cout << "Hello, world" // const char* 重载
              << std::endl;          // char 重载
    std::ofstream("test.txt") << 1.2; // 右值重载
}

输出

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kubernetes 节点排水维护 cordon, drain, uncordon

1.这三个命令是正式release的1.2新加入的命令&#xff0c;三个命令一起介绍&#xff0c;是因为三个命令配合使用可以实现节点的维护。在1.2之前&#xff0c;因为没有相应的命令支持&#xff0c;如果要维护一个节点&#xff0c;只能stop该节点上的kubelet将该节点退出集群&#…

Java-API简析_java.net.InetAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131590559 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…

git因网络问题报错

Failed to connect to github.com port 443 after 21051 ms: Couldnt connect to server Recv failure: Connection was reset 你是否最近也有遇到这种情况呢&#xff1f; 公司项目目前保存在github上, 在 git pull 和 git push 的时候总是遇到以上情况 也是困扰了我不少…

ESP32-C2 固件烧录需满足的硬件环境整理

ESP32-C2 默认通过 UART0 &#xff08;即 TXD&#xff08;GPIO20&#xff09;和 RXD&#xff08;GPIO19&#xff09;&#xff09;下载固件。 Windows 下可使用 Flash download tool 工具来下载编译后的 bin 文件&#xff1b; 运行 flash_download_tool.exe 的文件 选择开发…

2023 最新互联网大厂Java面经分享:25 分类、1000 道 Java 面试真题(50w 字解析)

作为 Java 程序员&#xff0c;选择学习什么样的技术&#xff1f;什么技术该不该学&#xff1f;去招聘网站上搜一搜、看看岗位要求就十分清楚了&#xff0c;自己具备的技术和能力&#xff0c;直接影响到你工作选择范围和能不能面试成功。 如果想进大厂&#xff0c;那就需要在 Ja…

数据库-分布式数据库历史变迁之旅

我们正式开始分布式数据库历史变迁之旅。 单机数据库的不可能三角 正如经济政策的不可能三角“不可能同时实现资本流动自由&#xff0c;货币政策的独立性和汇率的稳定”那样&#xff0c;单机数据库也有一个不可能三角&#xff0c;那就是&#xff1a;①持久化 ②事务隔离 ③高性…

17款奔驰S400加装原厂无钥匙进入系统,提升您的便利性

奔驰无钥匙进入功能&#xff0c;只要身上装着车钥匙进入车内&#xff0c;车辆就能感应到钥匙的存在&#xff0c;这时只需按下启动键就可启动车辆了 奔驰无钥匙进入功能主要有两大使用体验&#xff0c;首先就是要注意主驾驶位车门的有效检测距离不小于1.5m&#xff0c;其他门钥匙…

BOM/PCB/Gerber比对功能再升级,华秋DFM新版邀您体验!

在电子产品开发过程中&#xff0c;方案选型、原理图设计、BOM制作、PCB设计再到PCB、PCBA的生产都会经历多次版本迭代。在硬件开发过程中BOM文件的迭代、PCB设计的版本迭代是最为常见的&#xff0c;所以对应的版本管控至关重要&#xff0c;只有清晰地了解不同版本的差异&#x…

武汉理工大学第四届ACM校赛

武汉理工大学第四届ACM校赛传送门 A-ST和TS回文问题 这种题都是有一定简单的规律的 如果每个字符都相等的话,肯定存在 如果字符串T的长度是字符串S的整数倍的话,如果字符串S是回文串或者T的长度是S的长度的奇数倍的话,那么存在 否则不存在 就自己构造字符串来找规律&…

121.实战网页图片优化

如上图所示&#xff0c;这个图标的内部尺寸为14791459&#xff0c;但是我们实际呈现的渲染的效果为570562&#xff1b;所以我们可以调整一下图像的大小&#xff0c;缩小图片的文件大小&#xff1b; 我们可以修改他的尺寸&#xff0c;文件的大小就缩小了。但是在网页上显示一点区…

软件测试之单元测试详解

目录 前言&#xff1a; 1、什么是单元测试&#xff1f; 2、什么是好的单元测试&#xff1f; 3、怎么写单元测试&#xff1f; 4、玩转单元测试 前言&#xff1a; 单元测试是软件测试中的一种测试方法&#xff0c;用于验证代码中最小可测试单元的正确性。它主要关注对程序的…

云上百世慧|「慧」聚智能制造的全流程质量管控(我们在7月31日等你)

在制造业的迅猛发展中&#xff0c;「质量管控」一直是企业面临的重要挑战和痛点。如何对「原材料、组件、生产过程和最终产品」进行严格的监控和控制&#xff1f; 稳抓行业痛点&#xff0c;优化质量流程 质量管控&#xff0c;是确保产品符合标准的关键环节。通过严格的监控和控…

卸载mathtype导致的word问题 MathPage.wll not found

MathType 6.9简体中文版是一款功能很强大的数学公式编辑器,但是因为不明原因,有时会出现找不到MathType.dll或者MathPage.wll文件找不到的错误窗口提示&#xff0c;而导致软件无法正常使用&#xff0c;本文将教您解决MathPage.wll或MathType.dll文件找不到的问题。 错误提示&a…

5 给属性赋值的几种方式

首先创建两个类&#xff0c;Person和Dog。为了可以被扫描到&#xff0c;在前面加入Component注解。 Person类如下&#xff1a; package jiang.com.helloworld.pojo;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.…

React 之 过渡动画

一、React的过渡动画 在开发中&#xff0c;我们想要给一个组件的显示和消失添加某种过渡动画&#xff0c;可以很好的增加用户体验 可以通过原生的CSS来实现这些过渡动画&#xff0c;但是React社区为我们提供了react-transition-group用来完成过渡动画 React曾为开发者提供过动画…

MySQL表/用户权限等基本操作

MySQL表操作练习题&#xff1a; 第一题&#xff1a; 具体要求如下所示&#xff1a; 1. 创建数据库Market&#xff1a; CREATE DATABASE Market;2. 创建customers表&#xff1a; 表结构如图所示&#xff1a; CREATE TABLE customers( c_num INT(11) PRIMARY KEY, c_name…

TiDB(8):技术内幕之计算

1 关系模型到 Key-Value 模型的映射 在这我们将关系模型简单理解为 Table 和 SQL 语句&#xff0c;那么问题变为如何在 KV 结构上保存 Table 以及如何在 KV 结构上运行 SQL 语句。 假设我们有这样一个表的定义&#xff1a; CREATE TABLE User {ID int,Name varchar(20),Role …

基于springboot+vue的文超市进销存管理系统(源代码+数据库+12000字论文)083

基于springbootvue的文超市进销存管理系统(源代码数据库12000字论文)083 一、系统介绍 (本项目有ssmvue版本) 本系统分为管理员、用户、员工三种角色 用户角色包含以下功能&#xff1a; 登录、注册、购物车、订单提交、商品评论、收藏、充值、收货地址管理、收藏管理、订单…

NXP-无感BLDC代码MCSPTE1AK116_BLDC_6Step代码详解

目录 开发平台 工程目录 Generated_Code Sources Config 电机的参数 BLDC参数 无感模式下的一些参数 Peripherals FTM/PDB/ADC配置参数 actuate_s32k meas_s32k motor_structure state_machine main main()主函数 PORT_IRQHandler() PDB0_IRQHandler() FTM1…

最大正方形 · Maximal Square

链接&#xff1a; 题解&#xff1a;九章算法 - 帮助更多程序员找到好工作&#xff0c;硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧 1.暴力的方法&#xff1a;遍历每一个&#xff08;i&#xff0c;j&#xff09;位置&#xff0c;如果当前点为1&#xff0c;则以当前节点为…