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 示例中那样增加字段的宽度。这样一切都左对齐,你不需要制表符。
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 示例中那样增加字段的宽度。这样一切都左对齐,你不需要制表符。