C++基础补充(03)C++20 的 std::format 函数

文章目录

  • [1. 使用C++20 std::format](#1. 使用C++20 std::format)
  • [2. 基本用法](#2. 基本用法)
  • [3. 格式说明](#3. 格式说明)

1. 使用C++20 std::format

需要将VisualStudio默认的标准修改为C++20

菜单"项目"-"项目属性",打开如下对话框

代码中加入头文件

2. 基本用法

通过占位符{}制定格式化的位置,后面传入变量

cpp 复制代码
#include<iostream>
#include<format>
#include<string>
using namespace std;

int main()
{
	int x = 68;
	double pi = 3.14159;
	string name = "Alice";

	//格式化字符串
	string rst = format("Hello,{}! The answer is {} and pi is {:.2f}.", name, x, pi);

	cout << rst << endl;

	return 0;
}

输出

Hello,Alice! The answer is 68 and pi is 3.14.

使用 {} 作为占位符,参数顺序插入

可以指定格式。{:.2f} 表示保留2位小数

3. 格式说明

详细可查阅手册

整数格式化

cpp 复制代码
#include<iostream>
#include<format>
#include<string>
using namespace std;

int main()
{
	int x = 68;
	cout << format("Decimal:{}\n", x);//十进制输出
	cout << format("Hex:{:#x}\n", x);//十六进制输出
	cout << format("Binary:{:#b}\n", x);//二进制输出
	return 0;
}

浮点数格式化

cpp 复制代码
#include<iostream>
#include<format>
#include<string>
using namespace std;

int main()
{
	double val = 3.14159;
	cout << format("Default: {}\n", val);  // 默认 3.14159
	cout << format("Fixed:{:.2f}\n", val); // 固定2位小数 3.14
	cout << format("Scientific:{:.2e}\n", val);//科学计数法 3.14e+00
	return 0;
}

字符串格式化

cpp 复制代码
#include <iostream>
#include <format>
using namespace std;
int main() 
{
    string str = "Hello";
    cout << format("Default: {}\n", str);    // 默认输出: Hello
    cout << format("Padded: {:>10}\n", str); // 右对齐,宽度 10:      Hello
    cout << format("Left Padded: {:<10}\n", str);  // 左对齐,宽度 10: Hello     
    return 0;
}

输出

{:#x}:表示带有前缀的十六进制输出,前缀为 0x。

{:#b}:表示带有前缀的二进制输出,前缀为 0b。

{:05}:表示使用 5 位宽度输出,并用零进行左侧填充。

{:.2f}:表示浮点数保留两位小数。

{:.2e}:表示浮点数使用科学计数法输出,保留两位小数。

相关推荐
小鲈鱼-14 分钟前
【LeetCode4.寻找两个正序数组的中位数】二分O(log(m+n))
c++·算法
橘颂TA16 分钟前
【C++】红黑树的底层思想 and 大厂面试常问
数据结构·c++·算法·红黑树
三体世界1 小时前
TCP传输控制层协议深入理解
linux·服务器·开发语言·网络·c++·网络协议·tcp/ip
你的冰西瓜1 小时前
C++ 中最短路算法的详细介绍
c++·算法·图论·最短路
<但凡.1 小时前
数据结构与算法之美:广义表
数据结构·c++·算法
大白的编程日记.3 小时前
【计算机基础理论知识】C++篇(二)
开发语言·c++·学习
C语言小火车3 小时前
野指针:C/C++内存管理的“幽灵陷阱”与系统化规避策略
c语言·c++·学习·指针
凤年徐3 小时前
【数据结构】时间复杂度和空间复杂度
c语言·数据结构·c++·笔记·算法
踏莎行hyx4 小时前
使用langchain连接llama.cpp部署的本地deepseek大模型开发简单的LLM应用
c++·ai·langchain·大模型·llama.cpp·deepseek
山河木马4 小时前
前端学C++可太简单了:双冒号 :: 操作符
前端·javascript·c++