猿问

使用C ++输出运算符打印前导零?

如何使用C ++格式化输出?换句话说,C ++的等效用法是printf这样的:


printf("%05d", zipCode);

我知道我只能printf在C ++中使用,但是我更喜欢output运算符<<。


您会使用以下内容吗?


std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;


拉风的咖菲猫
浏览 564回答 3
3回答

江户川乱折腾

至少对于问题中提到的非负数(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)本人(“所有邮政编码都不为负”)是我的假设,但我认为是一个相对安全的假设:-)

慕桂英3389331

使用setw和setfill调用:std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;

九州编程

要么,char t[32];sprintf_s(t, "%05d", 1);将输出00001,因为OP已经想要做
随时随地看视频慕课网APP
我要回答