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/