c++ printf 到 std::cout c++ printf 到 std::cout输出
c++ printf 到 std::cout
做为c++的资深c式使用者, printf使用率99.99%,而std::cout基本只用于hello world. 时代车轮在转动,c++23就要来了, 幸好有小言, 让我问问它.
以下面为示例
#include <stdio.h>
int main(int argc, char* argv[]) {
int iv = 99;
double dv = 3.1415926;
printf("int(%d=%07d) double(%7f=%.2f)\n", iv, iv, dv, dv);
return 0;
}
//打印显示为:
//int(99=0000099) double(3.141593=3.14)
1、首问: 使用c++ std::cout实现上面的效果 以下是使用C++ std::cout 实现与C代码相同输出的正确示例:
#include <iostream>
#include <iomanip>
int main(int argc, char* argv[]) {
int iv = 99;
double dv = 3.1415926;
std::cout << "int(" << iv << "=" << std::setw(7) << std::setfill('0') << iv << ") double(" << dv << "=" << std::setprecision(2) << dv << ")\n";
return 0;
}
在这个示例中,我们使用了 std::cout 来输出格式化的字符串。 std::setw(7) 用于设置输出宽度为7个字符, std::setfill('0') 用于设置填充字符为0。 std::setprecision(2) 用于设置输出精度为2位小数。 其他部分与C代码相同,只是将 printf 替换为 std::cout,并添加了必要的头文件 #include <iomanip>。
2、还有呢 在C++20中,引入了一个新的标准库 <format>,用于实现字符串的格式化输出。该库提供了一个名为 std::format 的函数,可以方便地格式化字符串并输出。 以下是使用 std::format 实现与上述C代码相同输出的示例:
#include <iostream>
#include <format>
int main() {
int iv = 99;
double dv = 3.1415926;
std::cout << std::format("int({}={:07}) double({:.7f}={:.2f})\n", iv, iv, dv, dv);
return 0;
}
在这个示例中,我们使用了 std::format 函数来格式化字符串。"{}={:07}" 表示一个占位符,使用 {} 表示要插入的变量,:07 表示输出宽度为7个字符,并使用0进行填充。"{}:.2f" 表示一个浮点数占位符,使用 {} 表示要插入的变量,.2f 表示输出精度为2位小数。然后通过 std::cout 输出格式化后的字符串。 需要注意的是,为了使用 <format> 库,需要包含头文件 <format>,并使用命名空间 std 中的 format 函数。