C++标准模板(STL)- 输入/输出操纵符-(std::setbase,std::setfill)

news2024/12/29 17:42:15

操纵符是令代码能以 operator<< 或 operator>> 控制输入/输出流的帮助函数。

不以参数调用的操纵符(例如 std::cout << std::boolalpha; 或 std::cin >> std::hex; )实现为接受到流的引用为其唯一参数的函数。 basic_ostream::operator<< 和 basic_istream::operator>> 的特别重载版本接受指向这些函数的指针。这些函数(或函数模板的实例化)是标准库中仅有的可取址函数。 (C++20 起)

以参数调用的操纵符(例如 std::cout << std::setw(10); )实现为返回未指定类型对象的函数。这些操纵符定义其自身的进行请求操作的 operator<< 或 operator>> 。

定义于头文件 <iomanip>

更改用于整数 I/O 的基数

std::setbase

/*unspecified*/ setbase( int base );

设置流的数值底。用于表达式 out << setbase(base) 或 in >> setbase(base) 时,取决于 base 的值,更改流 outinbasefield 标志:

  • 值 16 设置 basefield 为 std::ios_base::hex
  • 值 8 设置 std::ios_base::oct
  • 值 10 设置 std::ios_base::dec 。

异于 8 、 10 或 16 的 base 值重置 basefield 为零,这对应十进制输出和依赖前缀的输入。

参数

base-basefield 的新值

返回值

返回未指定类型的对象,使得若 str 为 std::basic_ostream<CharT, Traits> 或 std::basic_istream<CharT, Traits> 类型的流名称,则表达式 str << setbase(base) 或 str >> setbase(base) 表现为如同执行下列代码:

str.setf(base ==  8 ? std::ios_base::oct :
            base == 10 ? std::ios_base::dec :
                base == 16 ? std::ios_base::hex :
                     std::ios_base::fmtflags(0),
         std::ios_base::basefield);

调用示例

#include <iostream>
#include <sstream>
#include <iomanip>

int main()
{
    std::cout << "Parsing string \"10 0x10 010\"\n";

    int n1, n2, n3;
    std::istringstream s("10 0x10 010");
    s >> std::setbase(16) >> n1 >> n2 >> n3;
    std::cout << "hexadecimal parse: " << n1 << ' '
              << n2 << ' ' << n3 << std::endl;

    s.clear();
    s.seekg(0);
    s >> std::setbase(0) >> n1 >> n2 >> n3;
    std::cout << "prefix-dependent parse: " << n1 << ' '
              << n2 << ' ' << n3 << std::endl;

    std::cout << "hex output: " << std::setbase(16)
              << std::showbase << n1 << ' ' << n2
              << ' ' << n3 << std::endl;

    return 0;
}

输出

更改填充字符

std::setfill

template< class CharT >
/*unspecified*/ setfill( CharT c );

用于表达式 out << setfill(c) 时,它设置流 out 的填充字符为 c

参数

c-填充字符的新值

返回值

返回未指定类型对象,使得若 out 为 std::basic_ostream<CharT, Traits> 类型输出流的名称,则表达式 out << setfill(n) 表现如同执行下列代码:

out.fill(n);

注意

可用 std::ostream::fill 获得当前填充字符。

 调用示例

#include <iostream>
#include <iomanip>

int main()
{
    std::cout << "default fill: " << std::setw(10) << 42 << std::endl
              << "setfill('*'): " << std::setfill('*')
              << std::setw(10) << 42 << std::endl;

    return 0;
}

输出

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

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

相关文章

深信服云桌面用户忘记密码后的处理

深信服云桌面用户忘记了密码&#xff0c;分两种情况&#xff0c;一个是忘记了登录深信服云桌面的密码&#xff0c;另外一个是忘记了进入操作系统的密码。 一、忘记了登录深信服云桌面的密码 登录虚拟桌面接入管理系统界面&#xff0c;在用户管理中选择用户后&#xff0c;点击后…

C++ | 计算几何:判断点与多边形的关系

在屏幕坐标上有一个多边形&#xff0c;给定一个点&#xff0c;判断该点和多边形的关系。 例如在下图中&#xff0c;点A位于多边形内&#xff0c;点B位于多边形外&#xff0c;点C位于多边形上。 注意: 1.屏幕坐标系中&#xff0c;x轴从左往右为正方向&#xff0c;y轴从上到下为…

10分钟巩固多线程基础

10分钟巩固多线程基础 前言 多线程是并发编程的基础&#xff0c;本篇文章就来聊聊多线程 我们先聊聊概念&#xff0c;比如进程与线程&#xff0c;串行、并行与并发 再去聊聊线程的状态、优先级、同步、通信、终止等知识 进程与线程 什么是进程&#xff1f; 操作系统将资…

外汇天眼:假投资平台COINPAYEX非法吸金2158万,项目小组循线破获诈团据点

近年来加密货币投资愈来愈普及&#xff0c;许多人们开始关注并投入这个市场&#xff0c;期望能够获得高额报酬&#xff0c;甚至达到财务自由的目标。 但需要注意的是&#xff0c;市面上充斥各种黑平台&#xff0c;一不小心恐怕蒙受极大的损失。 9/12&#xff0c;警政署刑事警察…

c语言 - 实现每隔1秒向文件中写入当前系统时间

实现思路 主要是通过库函数和结构体获取当前系统时间&#xff08;年月日和时分秒&#xff09;保存到变量里&#xff0c;然后通过格式化输出函数将当前系统时间输出到文件中去。 但是需要注意的是题目要求每隔 1 s对系统时间进行输出&#xff0c;所以需要加入 sleep()函数进行调…

windows 环境变量设置

方法一&#xff1a;打开环境变量设置窗口&#xff08;或者cmd 执行sysdm.cpl命令&#xff09; 方法二&#xff1a; powershell执行如下命令&#xff0c;注意修改<要增加的环境变量值>值为要设置的环境变量值 [Environment]::SetEnvironmentVariable("PATH", $E…

2023最新团购社群小程序源码 社区商城小程序源码开源版 带完整后台+部署教程

随着互联网的不断发展&#xff0c;社群团购成为了一种新型的商业模式。在这种模式下&#xff0c;通过社群分享和团购折扣&#xff0c;消费者可以享受到更优惠的价格和更便捷的购物体验。给大家分享一个2023最新团购社群小程序源码&#xff0c;包含社区商城小程序源码开源版和完…

openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划

文章目录 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划83.1 MOT内存规划83.2 存储IO83.3 容量需求 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划 本节描述了为满足特定…

No132.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

基于python的智慧城市社区服务平台及养老服务子系统的设计与实现

文章目录 导文摘要前言绪论课题背景国内外现状与趋势国内现状:国外现状:趋势:课题内容相关技术与方法介绍系统分析系统设计系统实现导文 基于python的智慧城市社区服务平台及养老服务子系统的设计与实现 摘要 本文基于Python开发了一款智慧城市社区服务平台及养老服务子系统…

ant-design-pro的可编辑表格editprotable的遇到的一些小问题

需求&#xff1a;1、使用可编辑表格实现对某一行表格的数据进行编辑&#xff0c;对输入内容控制必须低于同行某一数据 2、解决搜索数据和列名展示不同&#xff0c;和不可编辑的列不展示在搜索框 实现效果 解决搜索和readonly之间的问题 因为本次需求只要求修改一个数据&…

ElementPlus· tab切换/标签切换 + 分页

tab切换 ---> <el-tabs><el-tab-pane>... 分页 --------> <el-pagination> tab切换 // tab标签切换 // v-model双向绑定选项中的name&#xff0c;tab-change事件在 activeName改变时触发 <script setup> const tabChange (tab, event)>{…

【JAVA】飞机大战

代码和图片放在这个地址了&#xff1a; https://gitee.com/r77683962/fighting/tree/master 最新的代码运行&#xff0c;可以有两架飞机&#xff0c;分别通过WASD&#xff08;方向&#xff09;&#xff0c;F&#xff08;发子弹&#xff09;&#xff1b;上下左右&#xff08;控…

大型企业网如何部署NAT实现需求

1.企业中堕胎电脑如何共享上网&#xff1f; 2.NAT地址转换原理讲解&#xff1b; 3.企业机房如何用NAT让服务器更安全&#xff1f; - NAT - 网络地址转换 - 什么式网络地址 IP地址 -通信时候的设备标识 - 为什么要把IP地址做转换呢&#xff1f; -- 公网IP&#xff…

迷你无人车 Navigation 导航(5)— 基础框架学习

迷你无人车 Navigation 导航&#xff08;5&#xff09;— 基础框架学习 整个功能包整个功能包集合以move_base为核心&#xff0c;将里程计信息、传感器信息、定位信息、地图以及目标点输入给move_base&#xff0c;move_base经过规划后会输出速度指令 move_base包括三个关键部分…

如何像人类一样写HTML之第一个HTML、标签的关系与注释

文章目录 前言一、创建第一个HTML文档创建方式1创建方式2 二、标签的关系三、注释的使用总结 前言 在现代数字化社会中&#xff0c;网页是我们获取信息、与他人交流以及展示自己的重要工具之一。要了解如何创建网页&#xff0c;HTML&#xff08;Hypertext Markup Language&…

给网站引入各大搜索引擎的关键字提示,白给的接口薅他羊毛

属于是导航网站必要的了 因为网站是个导航网站&#xff0c;有一个搜索框&#xff0c;用户搜索时需要像百度一样有个搜索提示关键词列表。 之前只是用百度&#xff0c;现在给增加了好几个&#xff0c;想换那个就换那个了&#xff0c;直接上图片 可以配置属于是想选哪个选哪个&…

树莓派4B使用Docker部署SpringBoot项目——(二)使用docker安装mysql

树莓派4B使用docker安装mysql 使用的树莓派4B为8GB版本&#xff0c;使用docker pull命令拉取MySQL镜像&#xff1a; docker pull --platformarm64 mysql/mysql-server等待拉取完成 使用docker images查看镜像 创建MySQL容器 docker run -di --namemysql -p 3306:3306 -e MY…

(vue3)create-vue 组合式API

优势&#xff1a; 更易维护&#xff1a;组合式api&#xff0c;更好的TS支持 之前是选项式api&#xff0c;现在是组合式&#xff0c;把同功能的api集合式管理 复用功能封装成一整个函数 更快的速度 更小的体积 更优的数据响应式&#xff1a;Proxy create-vue 新的脚手架工…

批量剪辑视频的秘密武器,添加SRT字幕并提升你的视频品质,高效剪辑的艺术

在如今的数字时代&#xff0c;视频内容的制作和分享变得越来越普遍。如果你是一个视频创作者&#xff0c;或者经常需要编辑和分享视频内容&#xff0c;那么我们为你带来了一款视频批量剪辑工具&#xff0c;让你轻松在固定位置添加字幕&#xff0c;打造专业级剪辑效果&#xff0…