Форматирование чисел в цикле - PullRequest
4 голосов
/ 24 мая 2010

Я хочу перечислить все числа от 0000-9999, но у меня проблемы с удержанием нулевых мест.

Я пытался:

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

, но я получаю: 1,2,3, 4..ect Как я могу сделать это 0001,0002,0003 .... 0010 и т. Д.

Ответы [ 4 ]

11 голосов
/ 24 мая 2010

См. setfill для указания символа заполнения и setw для указания минимальной ширины.

Ваш случай будет выглядеть так:

for(int i = 0; i <= 9999; ++i)
{
    cout << setfill('0') << setw(4) << i << "\n";
}
2 голосов
/ 24 мая 2010

Используйте ios_base::width() и ios::fill():

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

В качестве альтернативы используйте манипуляторы ввода-вывода:

#include<iomanip>

// ...
cout << setw(5) << setfill('0') << i << endl;
2 голосов
/ 24 мая 2010

Вам просто нужно установить несколько флагов:

#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;
}
0 голосов
/ 24 мая 2010

Хотя это и не обязательно, но если вы хотите узнать, как это сделать с C, вот пример:

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

Здесь «0» в «% 04d» работает как setfill('0')«4» работает как setw(4).

...