在 C 中使用前导零格式化输出
在 C 中,格式化输出对于以特定方式显示数据至关重要。一种常见的情况是打印前导零,类似于 printf 使用 d 处理它的方式。虽然可以选择使用 printf,但您可能更喜欢 C 流输出运算符 (
实现前导零的一个选项是使用 sprintf 将格式化字符串与输出运算符连接起来,如下所示:
std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;
但是,有一个使用 IO 的更干净的解决方案操纵器:
#include <iomanip> using namespace std; cout << setw(5) << setfill('0') << zipCode << endl; // or without 'using namespace std;' std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
setw(width) 设置字段宽度,而 setfill(char) 指定用于填充剩余空间的字符。在本例中,“0”用于添加前导零。
请注意,这些操纵符会影响 cout 对象的全局状态。为了避免在以后使用中出现意想不到的效果,您应该通过重置标志来撤消它们。
如果您喜欢简洁的格式,请考虑使用 fmt 库:
cout << fmt::format("{:05d}", zipCode);
C 20 及更高版本已构建-支持 std::format,并且 C 23 引入了 std::print,为格式化输出提供了更方便的选项。
For非负数,如邮政编码,上面的代码就足够了。但是,如果您需要处理负数,请添加 std::internal 以将填充字符放置在符号和大小之间:
cout << internal << setw(5) << setfill('0') << zipCode << endl;
以上是如何在 C 中格式化带有前导零的输出?的详细内容。更多信息请关注PHP中文网其他相关文章!