3 回答
TA贡献1851条经验 获得超5个赞
至少对于问题中提到的非负数(a),例如邮政编码(b),这将起到解决作用。
#include <iostream>
#include <iomanip>
using namespace std;
cout << setw(5) << setfill('0') << zipCode << endl;
// or use this if you don't like 'using namespace std;'
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
控制填充的最常见的IO操作器是:
std::setw(width) 设置字段的宽度。
std::setfill(fillchar) 设置填充字符。
std::setiosflags(align) 设置对齐方式,其中align是ios :: left或ios :: right。
而且,仅根据您的喜好使用<<,我强烈建议您研究一下fmt库。这是对我们用于格式化内容的工具包的重要补充,并且比大量长度的流管道要好得多,它允许您执行以下操作:
cout << fmt::format("{:05d}", zipCode);
LEWG目前也将其针对C ++ 20,这意味着它有望在那时成为该语言的基础部分(或者几乎可以肯定的是,如果它不十分流行的话)。
(a)如果确实需要处理负数,则可以使用std::internal以下方法:
cout << internal << setw(5) << setfill('0') << zipCode << endl;
这会将填充字符之间的符号和幅度。
(b)本人(“所有邮政编码都不为负”)是我的假设,但我认为是一个相对安全的假设:-)
TA贡献2036条经验 获得超8个赞
使用setw和setfill调用:
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;
- 3 回答
- 0 关注
- 563 浏览
添加回答
举报