使用 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;
在此代码中,我希望在固定文本之前以特殊格式打印从 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;