当前位置: 首页 > news >正文

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_tostd::format_to_nstd::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安全数据摆渡系统 构建便捷的内外网数据交换通道

安全数据摆渡系统是一种设计用于解决内外网环境下&#xff0c;数据传输、管理、共享问题的安全系统&#xff0c;通过加密、访问控制等策略&#xff0c;提供安全可靠的数据传输和共享服务&#xff0c;尤其适用于对网络安全建设要求高的行业&#xff0c;比如研发型企业、党政机构…...

【云开发笔记No.14】持续交付、持续部署、持续交付流水线

一、持续交付 持续交付&#xff08;Continuous Delivery&#xff09;是一种软件开发方法论&#xff0c;它强调在开发过程中&#xff0c;软件可以在任何时间以最小的努力被部署到生产环境。其核心是确保代码更改在经过一系列自动化测试后&#xff0c;能够快速、安全地集成到主代…...

蓝桥杯练习07小兔子爬楼梯

小兔子爬楼梯 介绍 小兔子想去月球上旅行&#xff0c;假设小兔子拥有一个阶梯子&#xff0c;当你爬完层就可以到达月球&#xff0c;小兔子每次可以跳1或者2个台阶&#xff0c;小兔子有多少种跳法可以到达月球呢&#xff1f; 给定n是一个正整数&#xff0c;代表梯子的阶数&…...

Docker in Docker原理与实战

Docker in Docker (DinD) 是一种在Docker容器内部运行Docker的技术。它允许在一个Docker容器内部创建和管理其他的Docker容器&#xff0c;实现了一个容器内部的容器编排环境。本文将介绍Docker in Docker的原理&#xff0c;并给出一个实际的应用场景。 Docker in Docker的原理…...

Ruoyi若依框架下载流程详细解读(SpringBoot-Vue)

图解&#xff1a; 前端设计&#xff1a; 前端设计一个link文字连接或者按钮&#xff08;ElementUI&#xff09;Element - The worlds most popular Vue UI framework 前端请求设计&#xff1a; import request from /utils/request //下载示例模型定义语言的JSON export const…...

【深度学习】Pytorch中实现交叉熵损失计算的方式总结

在PyTorch中&#xff0c;计算交叉熵损失主要有以下几种方式&#xff0c;它们针对不同的场景和需求有不同的实现方式和适用范围&#xff1a; 1. nn.CrossEntropyLoss 类 这是最常用且方便的方法&#xff0c;特别适用于多分类任务。nn.CrossEntropyLoss 实际上是同时完成了 sof…...

机器学习:处理jira工单的分类问题

如何根据jira工单的category、reporter自动找到处理它的组呢?这是一个利用机器学习中knn算法的小实践. 目录 Knn算法 数据 示例 分割数据 选择Neighbors knn的优缺点 机器学习是一种技术,它的目的是给机器学习能力,让它们可以根据数据自己做决定,所以对于训练…...

后端常问面经之操作系统

请简要描述线程与进程的关系,区别及优缺点&#xff1f; 本质区别&#xff1a;进程是操作系统资源分配的基本单位&#xff0c;而线程是任务调度和执行的基本单位 在开销方面&#xff1a;每个进程都有独立的代码和数据空间&#xff08;程序上下文&#xff09;&#xff0c;程序之…...

RK3568平台 iperf3测试网络性能

一.iperf3简介 iperf是一款开源的网络性能测试工具&#xff0c;主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行&#xff0c;包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点&#xff0c;广泛应用于网络性能测试、网络故障诊断和网…...

Spring Boot中实现对特定URL的权限验证:拦截器、切面和安全框架的比较

引言&#xff1a; 在开发Web应用程序时&#xff0c;对特定URL进行权限验证是一项常见的需求。在Spring Boot中&#xff0c;我们有多种选择来实现这一目标&#xff0c;其中包括使用拦截器、切面和专门的安全框架&#xff08;如Spring Security&#xff09;。本文将比较这三种方式…...

【能源数据分析-00】能源领域数据集集锦(动态更新)

一、前言 大数据科学在能源领域的深度应用&#xff0c;已经深刻改变了这一行业的垂直格局。它为我们提供了宝贵的见解&#xff0c;帮助降低下游市场的成本&#xff0c;使石油生产商能够更好地应对市场繁荣期的需求。近期&#xff0c;石油价格的剧烈下跌给全球经济带来了沉重打…...

数据挖掘与机器学习 1. 绪论

于高山之巅&#xff0c;方见大河奔涌&#xff1b;于群峰之上&#xff0c;便觉长风浩荡 —— 24.3.24 一、数据挖掘和机器学习的定义 1.数据挖掘的狭义定义 背景&#xff1a;大数据时代——知识贫乏 数据挖掘的狭义定义&#xff1a; 数据挖掘就是从大量的、不完全的、有噪声的、…...

Matlab实现序贯变分模态分解(SVMD)

大家好&#xff0c;我是带我去滑雪&#xff01; 序贯变分模态分解(SVMD) 是一种信号处理和数据分析方法。它可以将复杂信号分解为一系列模态函数&#xff0c;每个模态函数代表信号中的特定频率分量。 SVMD 的主要目标是提取信号中的不同频率分量并将其重构为原始信号。SVMD的基…...

云安全与云计算的关系

云计算又被称为网格计算&#xff0c;是分布式计算的一种&#xff0c;能够将大量的数据计算处理程序通过网络“云”分解成多个小程序&#xff0c;然后将这些小程序的结果反馈给用户。云计算主要就是能够解决任务分发&#xff0c;并进行计算结果的合并。 云安全则是我国企业创造的…...

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

前言 此篇文章已经是本系列的第四篇文章&#xff0c;意味着我们已经进入了Prompt工程的深水区&#xff0c;掌握的知识和技术都在不断提高&#xff0c;对于Prompt的技巧策略也不能只局限于局部运用而要适应LLM大模型的整体框架去进行改进休整。较为主流的LLM模型框架设计可以基…...

阿里云倚天云服务器怎么样?如何收费?

阿里云倚天云服务器CPU采用倚天710处理器&#xff0c;租用倚天服务器c8y、g8y和r8y可以享受优惠价格&#xff0c;阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持&#xff1a; 阿里云倚天云服务…...

海外社交营销为什么用云手机?不用普通手机?

海外社交营销作为企业拓展海外市场的重要手段&#xff0c;正日益受到企业的青睐。云手机以其成本效益和全球性特征&#xff0c;成为海外社交营销领域的得力助手。那么&#xff0c;究竟是什么特性使得越来越多的企业选择利用云手机进行海外社交营销呢&#xff1f;下文将对此进行…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...