C++程序以指定格式打印值

1. 简介

在C++中,要以指定格式打印值,可以使用formatting library。在C++20标准中,这个库被正式纳入,使得以一种更加简洁、容易理解的方式格式化输出变得更加容易。

在本篇文章中,我们将介绍如何使用formatting library来以指定格式打印支持不同类型(例如整数、浮点数、字符串等)的值。

2. 安装

为了使用formatting library,需要先安装CMC的格式化库。可以从GITHUB仓库https://github.com/fmtlib/fmt中下载库。在下载后,安装非常简单。只需要运行以下命令:

git clone https://github.com/fmtlib/fmt.git

cd fmt

mkdir build

cd build

cmake ..

make

sudo make install

3. 使用

3.1 格式化整数

格式化整数非常简单,并且可以使用很多不同的格式串。例如,以下代码将整数num输出为八进制数:

#include 

int main() {

int num = 10;

fmt::print("num in octal: {}\n", fmt::oct(num));

}

在上述代码中,我们使用了fmt::print函数来输出字符串,并且使用{}来指示formatting library插入值。fmt库中预定义了很多格式,数字也不例外。比如可以使用fmt::dec将一个整数格式化为十进制数、使用fmt::hex 将一个整数格式化为十六进制数,等等。可以在标准头文件中查看所有的格式串。

3.2 格式化浮点数

接下来,我们将演示如何使用formatting library格式化浮点数。同样,这也非常简单。以下代码将打印出浮点数f的值:

double f = 123.45678;

fmt::print("f = {}\n", f);

此时,输出结果为:

f = 123.457

这是因为默认情况下,formatting library只显示6位小数。如果希望显示更多的小数位,可以使用特定的格式串。例如,以下代码将f输出到22位精度:

double f = 123.45678;

fmt::print("f = {:.22f}\n", f);

在上述代码中,我们在格式串中使用:.22f来指示formatting libraryf格式化为22位小数。输出结果为:

f = 123.4567800000000036393

3.3 在输出中添加前导和末尾字符

formatting library中,可以使用<>控制输出中的前导和末尾字符。例如,以下代码将在输出中使用括号将f的值括起来:

double f = 123.45678;

fmt::print("( f = {:<5} )\n", f);

<>可以放在每个格式化占位符周围的花括号中,以指示前导和末尾字符的位置。上述代码中,我们将<放入了{:<5}中,这样<就在字符串的左侧,同时确保字符串总长为5。输出结果为:

( f = 123.457 )

3.4 格式化字符串

使用formatting library格式化字符串与格式化其他类型的值几乎相同。以下代码演示如何使用formatting library格式化字符串:

std::string s = "Hello, World!";

fmt::print("s = {}\n", s);

在这个例子中,我们创建了一个简单的字符串,然后使用fmt::print函数将其格式化并输出。输出结果如下:

s = Hello, World!

4. 结论

通过使用formatting library,我们可以轻松地以指定格式输出C++程序中的任何值。无论是整数、浮点数还是字符串,都可以使用简单的代码来格式化输出,并将其打印到控制台中。此外,formatting library还支持其他很多功能,例如写入到字符串等,这些功能可以帮助我们更好地掌控输出。

后端开发标签