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 library将f
格式化为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还支持其他很多功能,例如写入到字符串等,这些功能可以帮助我们更好地掌控输出。