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

时间:2016-01-11 20:35:28

标签: c++ output-formatting

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

  

测试001
  测试002
  测试003
  ...
  测试999

但是,我不想将其显示为

  

测试1
  测试2
  ...
  测试10
  ...
  测试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;
}

1 个答案:

答案 0 :(得分:10)

setfillsetw manipulators仅适用于 next 输出操作。因此,在您的情况下,您可以将其设置为TEXT的输出。

相反,例如。

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