c++20 std::format 格式化说明

在标头<format>定义


()功能很强大,它把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’。

1、基本用法

  • (1)不带编号,即“{}”
  • (2)带数字编号,可调换顺序,即“{1}”、“{2}”
std::string str = std::format("{} {}!", "Hello", "world", "something"); // OK,产生 "Hello world"std::string str = std::format("{0} {1}!", "Hello", "world", "something"); // OK,产生 "Hello world"std::string str = std::format("{1} {0}!", "Hello", "world", "something"); // OK,产生 "world Hello!"

 不带编号"{}"默认按参数顺序输入,带序号“{2}”则 按参数索引位置输入。

2、复杂点用法

格式说明:下面格式都是可选的,都不填的话 就等于用 上面的基本用法

[: 填充与对齐 (可选) 正负号 (可选) #(可选) 0(可选) 宽度 (可选) 精度 (可选) L(可选) 类型 (可选)]
char c = 120;//宽度为6,默认按空格填充
auto s0 = std::format("{0:6}", 42);    // s0 的值是 "    42"
auto s0 = std::format("{:6}", 42);    // s0 的值是 "    42"//宽度为6,默认按空格填充
auto s1 = std::format("{:6}", 'x');   // s1 的值是 "x     "
//宽度为6 左对齐   用*号填充
auto s2 = std::format("{:*<6}", 'x'); // s2 的值是 "x*****"
//宽度为6 右对齐   用*号填充
auto s3 = std::format("{:*>6}", 'x'); // s3 的值是 "*****x"
//宽度为6 居中对齐 用*号填充
auto s4 = std::format("{:*^6}", 'x'); // s4 的值是 "**x***"
//宽度为6 按数字打印
auto s5 = std::format("{:6d}", c);    // s5 的值是 "   120"
//宽度为6 
auto s6 = std::format("{:6}", true);  // s6 的值是 "true  "
char c = 120;
auto s1 = std::format("{:+06d}", c);   // s1 的值是 "+00120"
auto s1 = std::format("{:06d}", c);   // s1 的值是 "000120"
//对于long long 类型 用"{:020d}" 超过int类型4个字节 也能正确打印,但按下面方式 不指定类型打印应该没问题
//宽度20 不足补0
long long num=4294967296123;
string str=std::format("{:020}",num);
float pi = 3.14f;
auto s1 = std::format("{:10f}", pi);           // s1 = "  3.140000" (宽度 = 10)
auto s2 = std::format("{:{}f}", pi, 10);       // s2 = "  3.140000" (宽度 = 10)
auto s3 = std::format("{:.5f}", pi);           // s3 = "3.14000" (精度 = 5)
auto s4 = std::format("{:.{}f}", pi, 5);       // s4 = "3.14000" (精度 = 5)
auto s5 = std::format("{:10.5f}", pi);         // s5 = "   3.14000"// (宽度 = 10,精度 = 5)
auto s6 = std::format("{:{}.{}f}", pi, 10, 5); // s6 = "   3.14000"// (宽度 = 10,精度 = 5)auto b1 = std::format("{:{}f}", pi, 10.0);     // 抛出:宽度不是整数类型
auto b2 = std::format("{:{}f}", pi, -10);      // 抛出:宽度为负
auto b3 = std::format("{:.{}f}", pi, 5.0);     // 抛出:精度不是整数类型

格式控制符 和c语言的printf类似:

std::format是C++20中引入的一种新的字符串格式化方法。它使用类似Python的str.format风格的语法来格式化字符串。以下是一些常用的std::format格式控制符:{:b}:二进制表示{:d}:十进制表示{:o}:八进制表示{:x}:十六进制表示,使用小写字母{:X}:十六进制表示,使用大写字母{:c}:相应的Unicode字符{:s}:字符串(实际上是任何可以转换为字符串的类型){:a}:浮点数表示,使用科学计数法{:A}:浮点数表示,使用科学计数法,并且使用大写字母{:e}:浮点数表示,使用科学计数法,并且使用小写字母{:E}:浮点数表示,使用科学计数法,并且使用大写字母{:f}:浮点数表示,不使用科学计数法{:F}:与{:f}相同,但在某些平台上表现不同{:g}:根据值自动选择{:f}或{:e}{:G}:根据值自动选择{:f}或{:E}{:n}:与{:g}相同,但添加了千位分隔符{:p}:指针表示{:%%}:输出一个百分比符号(%)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年【浙江省安全员-C证】考试试卷及浙江省安全员-C证模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 浙江省安全员-C证考试试卷是安全生产模拟考试一点通总题库中生成的一套浙江省安全员-C证模拟考试题库&#xff0c;安全生产模拟考试一点通上浙江省安全员-C证作业手机同步练习。2024年【浙江省安全员-C证】考试试卷及…

arcgisPro修改要素XY容差

1、在arcgisPro中XY容差的默认值为1个毫米&#xff0c;及0.001米。为了更精细的数据&#xff0c;需要提高这个精度&#xff0c;如何提高呢&#xff1f; 2、如果直接在数据库下新建要素类&#xff0c;容差只能调至0.0002米。所以&#xff0c;需要在数据库下新建要素数据集。 3…

安全工具 | 使用Burp Suite的10个小tips

Burp Suite 应用程序中有用功能的集合 img Burp Suite 是一款出色的分析工具&#xff0c;用于测试 Web 应用程序和系统的安全漏洞。它有很多很棒的功能可以在渗透测试中使用。您使用它的次数越多&#xff0c;您就越发现它的便利功能。 本文内容是我在测试期间学到并经常的主要…

Gradio 中如何让 Chatbot 自动滚动

在 Gradio 中&#xff0c; Chatbot 是对话组件&#xff0c;接受 history 参数&#xff0c;在目前版本中 &#xff08;gradio4.44.0&#xff09;&#xff0c;不支持自动滚动&#xff0c;用起来很不方便&#xff0c;该功能在社区中已经提出了&#xff0c;目前该功能还没有发布。本…

[000-01-008].第05节:OpenFeign特性-重试机制

我的后端学习大纲 SpringCloud学习大纲 1.1.重试机制的默认值&#xff1a; 1.重试机制默认是关闭的&#xff0c;给了默认值 1.2.测试重试机制的默认值&#xff1a; 1.3.开启Retryer功能&#xff1a; 1.修改配置文件YML的配置&#xff1a; 2.新增配置类&#xff1a; packa…

如何用 Helm Chart 安装指定版本的 GitLab Runner?

本分分享如何使用 Helm 来在 Kubernetes 集群上安装极狐GitLab Runner。整体步骤分为&#xff1a;Helm 的安装、vaules.yaml 文件的配置、Runner 的安装、Runner 的测试。 极狐GitLab 为 GitLab 在中国的发行版&#xff0c;中文版本对中国用户更友好。极狐GitLab 支持一键私有…

2024.9最新:CUDA安装,pytorch库安装

目录 一、CUDA安装 1.查看自己电脑适配的CUDA的最高版本 2.安装CUDA 3.检查环境变量是否配置&#xff0c;安装是否成功 二、pytorch库安装 1.pytorch库下载 2.选择合适的版本 3.查看版本 一、CUDA安装 1.查看自己电脑适配的CUDA的最高版本 在命令提示符里输入nvidia-…

股指期货的详细玩法功能与应用解析

股指期货作为一种重要的金融衍生工具&#xff0c;为投资者提供了多样化的投资和风险管理手段。本文将详细探讨股指期货的三大主要功能&#xff1a;风险规避、价格发现和资产配置。 第一&#xff0c;风险规避功能 1.套期保值&#xff1a;股指期货的风险规避功能主要通过套期保值…

pytorch快速入门(一)—— 基本工具及平台介绍

前言 该pytorch学习笔记应该配合b站小土堆的《pytorch深度学习快速入门教程》使用 环境配置&#xff1a;Anaconda Python编译器&#xff1a;pycharm、jupyter 两大法宝函数 dir&#xff08;&#xff09;&#xff1a;知道包中有什么东西&#xff08;函数 / 属性..…

基于SpringBoot的招生宣传管理系统【附源码】

基于SpringBoot的招生宣传管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2系统功能结构设计 4.3数据库设计 4.3.1数据库E-R图设计 4.3.2 数据库表结构设计 5 系统实现 5.1管理员功能介绍 5.1.1管理员登录 …

jmeter 录制APP脚本

一、手机 1、修改网络 代理选择手动→填写服务器主机名&#xff08;电脑IP&#xff0c;如&#xff1a;192.1xx.x.xx&#xff09;→服务器端口&#xff08;任意未被占用端口&#xff0c;如&#xff1a;8888&#xff09; 2、安装证书 手机浏览器访问服务器主机名:服务器端口&a…

有关WSL和docker的介绍

目录标题 如何利用在windows上配置docker实现linux和windows容器修改WSL默认安装&#xff08;也就是linux子系统&#xff09;目录到其他盘 如何利用在windows上配置docker实现linux和windows容器 wsl的基本命令&#xff1a;参考网页 docker入门到实践&#xff1a;参考网页 官方…

一个简约的uniapp登录界面,基于uniapp+vue3+uview-plus

uniapp-vue3-template 一个简约的uniapp登录界面&#xff0c;基于uniappvue3uview-plus 页面主要包括&#xff1a;用户登录&#xff0c;手机验证码登录&#xff0c;用户注册&#xff0c;重置密码等页面 登录进去后为空白模板 源码在文末 界面 源码 uniapp登录界面源码

C++速通LeetCode简单第6题-环形链表

快慢指针真的很好用&#xff01; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:bool hasCycle(ListNode *head) {//快慢指针ListNode* fast…

DNS解析域名详解

你有没有想过&#xff0c;当一个url传过来网络对它进行了哪些操作~DNS又是怎样对域名进行解析的~或者我们为什么要用到域名&#xff0c;为什么不直接使用ip地址~ 对于我们而言&#xff0c;面对长串的ip地址&#xff0c;我们更喜欢记忆较短的域名&#xff0c;但是对于路由器来说…

C++比大小游戏

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> #include <Windows.h> using namespace std; int main() {int ir 1;char chparr[2] { 0 };int ip1 0;int ip2 0;int i 1;c…

双指针算法专题(2)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 优选算法专题 想要了解双指针算法的介绍&#xff0c;可以去看下面的博客&#xff1a;双指针算法的介绍 目录 611.有效三角形的个数 LCR 1…

GitLab权限及设置

之前很少关注这些&#xff0c;项目的权限&#xff0c;一般由专门的管理人员设置。 但自己创建的项目自己可以设置权限。下面是一些笔记。 GitLab中用户权限_gitlab 权限-CSDN博客 开发中遇到要将自己这块的代码上传到Git&#xff0c;由其他组的同事拉取后继续开发。上传代码后…

【Spring Boot】SpringBoot自动装配-Import

目录 一、前言二、 定义三、使用说明3.1 创建项目3.1.1 导入依赖3.1.2 创建User类 3.2 测试导入Bean3.2.1 修改启动类 3.3 测试导入配置类3.3.1 创建UserConfig类3.3.2 修改启动类 3.4 测试导入ImportSelector3.4.1 创建UseImportSelector类3.4.2 修改启动类3.4.3 启动测试 3.5…

LibSVM介绍及使用

介绍 LibSVM 是一个广泛使用的开源库&#xff0c;用于支持向量机&#xff08;SVM&#xff09;的实现。它由台湾大学的 Chih-Chung Chang 和 Chih-Jen Lin 开发。LibSVM 提供了一种简单易用的接口&#xff0c;支持多种 SVM 变体&#xff0c;包括分类、回归和分布估计。以下是一些…