format(C++20)
1. std::format
format_01.cpp
// g++ format_01.cpp -std=c++20
#include <iostream>
#include <string>
#include <format>void test_01() {// 使用字符串填充std::cout << std::format("Hello {}!\n", "World"); // Hello World!// 提供的参数可以比placeholder多std::cout << std::format("Hello {}!\n", "World", 1, 2, 3); // Hello World!// 可以通过占位符调整输出的顺序std::cout << std::format("{0} {1} {2} {3}\n", "Wang", "Zai", "Niu", "Nai"); // Wang Zai Niu Naistd::cout << std::format("{3} {2} {0} {1}\n", "Wang", "Zai", "Niu", "Nai"); // Nai Niu Wang Zaistd::cout << std::format("{0} ", "Hao", "Yu", "Zhi", "Shi", "Jie"); // Haostd::cout << std::format("{1} ", "Hao", "Yu", "Zhi", "Shi", "Jie"); // Yustd::cout << std::format("{2} ", "Hao", "Yu", "Zhi", "Shi", "Jie"); // Zhistd::cout << std::format("{3} ", "Hao", "Yu", "Zhi", "Shi", "Jie"); // Shistd::cout << std::format("{4}\n", "Hao", "Yu", "Zhi", "Shi", "Jie"); // Jie// 使用整数填充int a = 1, b = 2;int c = a + b;std::cout << std::format("{} + {} = {}\n", a, b, c); // 1 + 2 = 3// 使用浮点数填充double d = 1.2, e = 3.5;double f = d + e;std::cout << std::format("{0} + {1} = {2}\n", d, e, f); // 1.2 + 3.5 = 4.7
}int main() {test_01();
}
format_02.cpp
// g++ format_02.cpp -std=c++20
#include <iostream>
#include <string>
#include <format>void test_02(){/* {[arg_id][!spec][:[fill]align][sign][#][0][width][.precision][type]} */// 冒号前面的2表示占位符arg_id,输出第二个参数;// “:*^+100”中,^是fill表示居中对齐,20是align表示填充宽度,*是填充字符,+表示加法符号std::cout << std::format("{2:*^+20}\n", 56, 24, 36); // ********+36*********// 填充宽度也可以用占位符、参数对来表示,如下面的3表示使用占位符的第三个参数作为填充宽度std::cout << std::format("{2:*^+{3}}\n", 56, 24, 36, 20); // ********+36*********// 左右对齐std::cout << std::format("{0:}: {2:*<20}\n", "left-align", "right-align", -36); // left-align: -36*****************std::cout << std::format("{1:}: {2:0>20}\n", "left-align", "right-align", 36); // right-align: 00000000000000000036// 十六进制、十进制、八进制、二进制std::cout << std::format("{0:}: {4:^10X}\n", "HEX", "DEC", "OCT", "BIN", 15); // HEX: F std::cout << std::format("{0:}: {4:^#10X}\n", "HEX", "DEC", "OCT", "BIN", 15); // HEX: 0XF std::cout << std::format("{0:}: {4:^#10x}\n", "HEX", "DEC", "OCT", "BIN", 15); // HEX: 0xf std::cout << std::format("{3:}: {4:^#10B}\n", "HEX", "DEC", "OCT", "BIN", 15); // BIN: 0B1111std::cout << std::format("{3:}: {4:^#10b}\n", "HEX", "DEC", "OCT", "BIN", 15); // BIN: 0b1111 std::cout << std::format("{2:}: {4:^#10o}\n", "HEX", "DEC", "OCT", "BIN", 15); // OCT: 017std::cout << std::format("{1:}: {4:^#10}\n", "HEX", "DEC", "OCT", "BIN", 15); // DEC: 15// 精度double val = 3.14159265358 / 1.3;std::cout << std::format("{0:*^20.12}\n", val); // ***2.41660973352****std::cout << std::format("{0:*^20.12f}\n", val); // ***2.41660973352****std::cout << std::format("{0:.12g}\n", val); // g是默认格式,2.41660973352std::cout << std::format("{0:.12e}\n", val); // 2.416609733523e+00std::cout << std::format("{0:.12E}\n", val); // 2.416609733523E+00std::cout << std::format("{0:.12a}\n", val); // 1.355377be56a4p+1std::cout << std::format("{0:.12A}\n", val); // 1.355377BE56A4P+1int width = 20, precision = 12; // 总共20位,精度(小数位)占12位std::cout << std::format("{0:=^{1}.{2}E}\n", val, width, precision); // =2.416609733523E+00=
}int main() {test_02();
}
2. std::format_to、std::format_to_n、std::formatted_size
format_03.cpp
#include <string>
#include <iostream>
#include <format>
#include <vector>void test_03(){double pi = 3.14159265358979;char content[50] = {'\0'};sprintf(content, "%f", pi);printf("%s\n", content); // 3.141593std::cout << std::format("{}\n", pi);std::format_to_n(content, sizeof(content), "{}", pi);std::cout << content << std::endl; // 3.14159265358979std::vector<char> vec1;std::format_to(std::back_inserter(vec1), "{}", pi); // 3.14159265358979for(const auto&it: vec1){ std::cout << it;}std::cout << std::endl;// 计算格式化字符串需要的空间auto size = std::formatted_size("{}", pi);std::vector<char> vec2(size); std::format_to(vec2.data(), "{}", pi); // 3.14159265358979for(const auto&it: vec2){ std::cout << it; }std::cout << std::endl;
}int main() {test_03();
}
相关文章:
format(C++20)
1. std::format format_01.cpp // g format_01.cpp -stdc20 #include <iostream> #include <string> #include <format>void test_01() {// 使用字符串填充std::cout << std::format("Hello {}!\n", "World"); // Hello World!…...
Ftrans安全数据摆渡系统 构建便捷的内外网数据交换通道
安全数据摆渡系统是一种设计用于解决内外网环境下,数据传输、管理、共享问题的安全系统,通过加密、访问控制等策略,提供安全可靠的数据传输和共享服务,尤其适用于对网络安全建设要求高的行业,比如研发型企业、党政机构…...
【云开发笔记No.14】持续交付、持续部署、持续交付流水线
一、持续交付 持续交付(Continuous Delivery)是一种软件开发方法论,它强调在开发过程中,软件可以在任何时间以最小的努力被部署到生产环境。其核心是确保代码更改在经过一系列自动化测试后,能够快速、安全地集成到主代…...
蓝桥杯练习07小兔子爬楼梯
小兔子爬楼梯 介绍 小兔子想去月球上旅行,假设小兔子拥有一个阶梯子,当你爬完层就可以到达月球,小兔子每次可以跳1或者2个台阶,小兔子有多少种跳法可以到达月球呢? 给定n是一个正整数,代表梯子的阶数&…...
Docker in Docker原理与实战
Docker in Docker (DinD) 是一种在Docker容器内部运行Docker的技术。它允许在一个Docker容器内部创建和管理其他的Docker容器,实现了一个容器内部的容器编排环境。本文将介绍Docker in Docker的原理,并给出一个实际的应用场景。 Docker in Docker的原理…...
Ruoyi若依框架下载流程详细解读(SpringBoot-Vue)
图解: 前端设计: 前端设计一个link文字连接或者按钮(ElementUI)Element - The worlds most popular Vue UI framework 前端请求设计: import request from /utils/request //下载示例模型定义语言的JSON export const…...
【深度学习】Pytorch中实现交叉熵损失计算的方式总结
在PyTorch中,计算交叉熵损失主要有以下几种方式,它们针对不同的场景和需求有不同的实现方式和适用范围: 1. nn.CrossEntropyLoss 类 这是最常用且方便的方法,特别适用于多分类任务。nn.CrossEntropyLoss 实际上是同时完成了 sof…...
机器学习:处理jira工单的分类问题
如何根据jira工单的category、reporter自动找到处理它的组呢?这是一个利用机器学习中knn算法的小实践. 目录 Knn算法 数据 示例 分割数据 选择Neighbors knn的优缺点 机器学习是一种技术,它的目的是给机器学习能力,让它们可以根据数据自己做决定,所以对于训练…...
后端常问面经之操作系统
请简要描述线程与进程的关系,区别及优缺点? 本质区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之…...
RK3568平台 iperf3测试网络性能
一.iperf3简介 iperf是一款开源的网络性能测试工具,主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行,包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点,广泛应用于网络性能测试、网络故障诊断和网…...
Spring Boot中实现对特定URL的权限验证:拦截器、切面和安全框架的比较
引言: 在开发Web应用程序时,对特定URL进行权限验证是一项常见的需求。在Spring Boot中,我们有多种选择来实现这一目标,其中包括使用拦截器、切面和专门的安全框架(如Spring Security)。本文将比较这三种方式…...
【能源数据分析-00】能源领域数据集集锦(动态更新)
一、前言 大数据科学在能源领域的深度应用,已经深刻改变了这一行业的垂直格局。它为我们提供了宝贵的见解,帮助降低下游市场的成本,使石油生产商能够更好地应对市场繁荣期的需求。近期,石油价格的剧烈下跌给全球经济带来了沉重打…...
数据挖掘与机器学习 1. 绪论
于高山之巅,方见大河奔涌;于群峰之上,便觉长风浩荡 —— 24.3.24 一、数据挖掘和机器学习的定义 1.数据挖掘的狭义定义 背景:大数据时代——知识贫乏 数据挖掘的狭义定义: 数据挖掘就是从大量的、不完全的、有噪声的、…...
Matlab实现序贯变分模态分解(SVMD)
大家好,我是带我去滑雪! 序贯变分模态分解(SVMD) 是一种信号处理和数据分析方法。它可以将复杂信号分解为一系列模态函数,每个模态函数代表信号中的特定频率分量。 SVMD 的主要目标是提取信号中的不同频率分量并将其重构为原始信号。SVMD的基…...
云安全与云计算的关系
云计算又被称为网格计算,是分布式计算的一种,能够将大量的数据计算处理程序通过网络“云”分解成多个小程序,然后将这些小程序的结果反馈给用户。云计算主要就是能够解决任务分发,并进行计算结果的合并。 云安全则是我国企业创造的…...
WPF 界面变量绑定(通知界面变化)
1、继承属性变化接口 public partial class MainWindow : Window, INotifyPropertyChanged {// 通知界面属性发生变化public event PropertyChangedEventHandler PropertyChanged;private void RaisePropertyChanged(string propertyName){PropertyChangedEventHandler handle…...
eclipse导入svn项目
1、配置maven 2、用svn引入项目 3一直点击next,到最后选完成。...
Prompt提示工程上手指南:基础原理及实践(四)-检索增强生成(RAG)策略下的Prompt
前言 此篇文章已经是本系列的第四篇文章,意味着我们已经进入了Prompt工程的深水区,掌握的知识和技术都在不断提高,对于Prompt的技巧策略也不能只局限于局部运用而要适应LLM大模型的整体框架去进行改进休整。较为主流的LLM模型框架设计可以基…...
阿里云倚天云服务器怎么样?如何收费?
阿里云倚天云服务器CPU采用倚天710处理器,租用倚天服务器c8y、g8y和r8y可以享受优惠价格,阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持: 阿里云倚天云服务…...
海外社交营销为什么用云手机?不用普通手机?
海外社交营销作为企业拓展海外市场的重要手段,正日益受到企业的青睐。云手机以其成本效益和全球性特征,成为海外社交营销领域的得力助手。那么,究竟是什么特性使得越来越多的企业选择利用云手机进行海外社交营销呢?下文将对此进行…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
