当前位置: 首页 > 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;下文将对此进行…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...