fstream 和 setw 没有正确对齐输出

fstream and setw not aligning output properly

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;
}

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


如果您想在每个数据集之间增加 space,那么只需像 this 示例中那样增加字段的宽度。这样一切都左对齐,你不需要制表符。