引言
C++标准流输出std::cout一直以来为人们所诟病:不灵活,格式化支持差,冗长等等。人们有此想法源于C库的printf()函数虽然不提供类型安全保障和线程安全保障,但它非常灵活,格式化支持非常好。
为此,C++23版本引入了std::print()/std::println()函数,完全解决了流输出std::cout为人们所诟病的问题。下面我们就来看看它们。
介绍
下面是来自cppreference.com关于std::print()的介绍:
支持 Unicode 编码的std::print系列函数可对已格式化的文本执行格式化 I/O。它们具有 std::format 的所有性能优势,默认情况下与语言环境无关,减少全局状态,避免分配临时 std::string 对象和调用运算符 <<,并且与 iostreams 和 stdio 相比,通常使格式化更高效。
头文件
std::print()系列函数定义在头文件<print>中,使用之前需要包括进去。
#include <print>
用法
std::print()为模版函数,其原型:
template<class... Args>
void print(format_string<Args...> fmt, Args&&... args);
第一个参数是格式化字符串,格式化后面要打印的参数。
第二个是一包参数,个数可变,即要打印的数据。
用例
#include <print>
int main()
{
std::print("Hello world!");
return 0;
}
Output:
Hello world!
#include <print>
int main()
{
std::print("{0} {2}{}", "Hello", 23, "C++");
return 0;
}
Output:
Hello C++23
#include <print>
#include <string>
int main()
{
std::string name { "Alan" };
std::print("Hello {0:*>10}", name);
return 0;
}
Output:
Hello ******Alan
附注
鉴于是新特性,目前GCC编译器必须是版本14.1.0及以上的版本才支持std::print()系列函数,并且编译选项必须指定为-std=c++23。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。