1

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

1 に答える 1

2

を使用する場合setw、関数はこれから表示される領域を宣言するために使用されることに注意してください"Person's Name:"したがって、文字数を数えてそれを値 (通常は +1 または 2) として使用するなど、情報内のテキストなどの静的な値を宣言するために使用できます。それを例として使用すると、値はsetw(16)各文字 + 2 つのスペースを考慮することになります。次にsetw、データを収容するのに十分な大きさの値を選択して、次のフィールドを宣言する別の値を適用します。leftこれが出力にどのように影響するかを確認できるように、位置合わせを忘れないでください。あなたの例では、右に揃えていました。一部の例ではフォーマットされた出力が得られる場合がありますが、他の例では壊れています。


各データセット間のスペースを増やしたい場合は、この例のようにフィールドの幅を広げてください。この方法では、すべてが左揃えになり、タブは必要ありません。

于 2015-10-01T06:41:44.940 に答える