使用 setw 和 setfill 的 C++ 输出格式化

C++ output formatting using setw and setfill

在此代码中,我希望在固定文本之前以特殊格式打印从 0 到 1000 的数字,如下所示:

Test 001
Test 002
Test 003
...
Test 999

但是,我不喜欢将其显示为

Test 1
Test 2
...
Test 10
...
Test 999

下面的 C++ 程序有什么问题导致它无法完成上述工作?

#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using  namespace std;

const string TEXT = "Test: ";

int main()
{

    const int MAX = 1000;
    ofstream oFile;

    oFile.open("output.txt");


    for (int i = 0; i < MAX; i++) {
        oFile << std::setfill('0')<< std::setw(3) ;
        oFile << TEXT << i << endl;
    }


    return 0;
}

setfill and setw manipulators仅用于下一个输出操作。因此,在您的情况下,您将其设置为 TEXT.

的输出

改为执行例如

oFile << TEXT << std::setfill('0') << std::setw(3) << i << endl;