fstream和setw没有正确对齐输出

时间:2015-10-01 06:30:38

标签: c++ fstream iomanip setw

setw似乎并没有为我调整一些事情,我无法弄清楚为什么会这样。插入\t会使事情向右移动,但我希望更严格地控​​制输出的格式。有什么想法吗?

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

int main() {

    string name = "Name LastName";
    int age = 27;
    double milesRun = 15.5;

    ofstream outFile;
    outFile.open("text.txt");

    outFile << "Person's name: " << name << setw(12) << "Person's age: " << age << setw(12) << "Miles run: " << milesRun << endl;

    outFile.close();

    return 0;
}

1 个答案:

答案 0 :(得分:2)

请记住,在使用setw时,该函数用于声明 about 的区域。因此,您可以使用它来声明静态值,例如您的信息中的文本,例如"Person's Name:",通过计算字符并将其用作您的值(通常为+1或2)。以此为例,值为setw(16)来计算每个字符+2个空格。然后,您应用另一个setw值来声明要来的字段,选择一个足够大的值来容纳您的数据。请记住对齐left,以便了解这会如​​何影响您的输出。在您的示例中,您正确对齐,虽然在某些示例中可能会给出格式化输出,但正如您所见,它会在其他示例中中断。

如果您希望每个数据集之间有更多空间,那么只需增加字段的宽度,如this示例中所示。这样一切都保持对齐,你不需要标签。