所以我知道在c++中,in中的前导0仍然存在并被使用,但是当你打印出来它会去掉0,所以我想知道是否有一种方法来检查在打印出来显示它时是否有前导0?或者,如果有一种方法可以手动检查int的第一个数字并检查其== 0,那么在打印出时我可以添加0吗?对于我的情况,int将始终是2位数。因此,int可以是00、01或55。
e.g
int main()
{
int b = 01;
std::cout << b << "\n"; // This should print 01 not 1
return 0;
}发布于 2022-01-04 11:53:40
整数以二进制形式存储。我想你说的是在屏幕上显示整数。不要将内部表示与整数的显示方式混淆。若要使用前导零显示,可以结合使用std::setw和std::setfill。
#include <iostream>
#include <iomanip>
struct zero_padded {
unsigned value;
unsigned width = 2;
};
std::ostream& operator<<(std::ostream& out, const zero_padded& zp){
return out << std::setw(zp.width) << std::setfill('0') << zp.value;
}
int main() {
std::cout << zero_padded{25} << "\n";
std::cout << zero_padded{5} << "\n";
std::cout << zero_padded{0} << "\n";
std::cout << zero_padded{25,4} << "\n";
std::cout << zero_padded{5,4} << "\n";
std::cout << zero_padded{0,4} << "\n";
}输出:
25
05
00
0025
0005
0000https://stackoverflow.com/questions/70578321
复制相似问题