382 字
2 分钟
什么?C++也有print了?
print("Hello World!");什么?这不是 Python,这是一个 C++ 23 的 print
继 C++ 20 引入了 std::format 之后,C++ 23 又引入了 print。std::print 的功能依旧与 fmt::print 的类似(参见std::print - cppreference.com和Overview — fmt 10.1.0 documentation)
到目前为止以下代码已经可以在最新版 MSVC 通过/std
#include <print>int main(){ std::print("Hello World!\n");}什么?你说这和 printf 看着没区别?好吧,上述代码确实直接把print改为printf之后依旧可以实现相同功能
那么我们来看看 print 的真正用法
与 Python 的 print 不同,std::print 或者 fmt::print 更像是输出 format 后的内容
来看看 print 的定义:
template< class... Args > void print( std::FILE* stream, std::format_string<Args...> fmt, Args&&... args );template< class... Args > void print( std::format_string<Args...> fmt, Args&&... args );在 cppreference 中,对 print 函数的描述为”根据格式字符串 fmt 格式化 args,并将结果打印到流中。“
听起来有点绕,那来看个例子(摘自 cppreference)
#include <cstdio>#include <filesystem>#include <print>
int main(){ std::print("{0} {2}{1}!\n", "Hello", 23, "C++"); // overload (1)
if (std::FILE* stream {std::fopen("test.txt", "w")}) { std::print(stream, "File: {}", "test.txt"); // overload (2) std::fclose(stream); }}以上代码的终端输出为
Hello C++23!同时,该程序会生成一个名为”test.txt“的文件,内容为
File: test.txt相信在未来,std::print 将会改变 std::cout 的垄断局面,C++ 23 标准的提出也将会是对于 C++语言的一次大变革,无论是好是坏,终究是多了一种选择
至于最后结果如何,那让我们拭目以待吧~
部分信息可能已经过时


