c++ - fstream 和 setw 没有正确对齐输出

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

最佳答案

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


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

关于c++ - fstream 和 setw 没有正确对齐输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880812/

相关文章:

c++ - 逐层打印二叉树

c++ - 列表或指针的问题,图的邻接表示

c++ - const char* str[] 中有多少个字符串?

c++ - fstream 库,试图创建一个具有变量名的文件 (c++)

C++ Primer 第 5 版 第 17.5.3 章 fstream 不换行

c++ - 在 C++ 中循环遍历 .txt 文件的行

C++模板方法选择正确的打印数据方式

C++:setw()仅在循环中的第一行上工作

C++ 错误 LNK1120 : 1 unresolved externals on calling inside of static function

c++ - fstream类成员变量