首页 > 后端开发 > C++ > 如何在 C 中格式化带有前导零的输出?

如何在 C 中格式化带有前导零的输出?

DDD
发布: 2024-12-04 21:44:15
原创
880 人浏览过

How Can I Format Output with Leading Zeros in C  ?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板