什么?C++也有print了?
print("Hello World!");

什么?这不是 Python,这是一个 C++ 23 的 print

继 C++ 20 引入了 std::format 之后,C++ 23 又引入了 print。std::print 的功能依旧与 fmt::print 的类似(参见std::print - cppreference.comOverview — fmt 10.1.0 documentation

到目前为止以下代码已经可以在最新版 MSVC 通过/std:c++latest 参数编译(gcc 13.2.1 和 clang 16.0.6 暂未通过测试)

#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++语言的一次大变革,无论是好是坏,终究是多了一种选择

至于最后结果如何,那让我们拭目以待吧~

感谢看到这里噢~ 希望这能给你带来帮助,如果觉得在任何地方有疑问,欢迎联系MWX(如需转载,请注明文章出处噢)!
或者如果大人愿意也可以...
上一篇
下一篇