循环格式化数字

时间:2010-05-24 07:29:39

标签: c++ numbers generator string-formatting

我想列出来自0000-9999的所有号码,但是我无法保持零位。

我试过了:

for(int i = 0; i <= 9999; ++i)
{
cout << i << "\n";
}

但我得到:1,2,3,4..ect 我该如何制作0001,0002,0003 .... 0010等

4 个答案:

答案 0 :(得分:11)

请参阅setfill指定填充字符,setw指定最小宽度。

您的案例如下:

for(int i = 0; i <= 9999; ++i)
{
    cout << setfill('0') << setw(4) << i << "\n";
}

答案 1 :(得分:2)

你只需要设置一些标志:

#include <iostream>
#include <iomanip>

using namespace std;
int main()
{
    cout << setfill('0');
    for(int i = 999; i >= 0; --i)
    {
        cout << setw(4) << i << "\n";
    }
    return 0;
}

答案 2 :(得分:2)

使用ios_base::width()ios::fill()

cout.width(5);
cout.fill('0');
cout << i << endl;

或者,使用IO操纵器:

#include<iomanip>

// ...
cout << setw(5) << setfill('0') << i << endl;

答案 3 :(得分:0)

虽然不是必需的,但是如果你想知道如何用C做这个,这里有一个例子:

for (int i = 0; i <= 9999; i++)
    printf("%04d\n", i);

此处,“%04d”中的“0”与setfill('0')的作用相同,“4”的作用类似于setw(4)