7

プログラムからテキストファイルにデータを出力したい。これは、私が現在どのようにそれを行っているかを示す実用的な例です。ここには、日付/時刻も含まれています(私はWindowsを実行しています)。

#include <iostream>
#include <fstream>
#include <time.h>

using namespace std;

int main()
{

char dateStr [9];
char timeStr [9];

_strdate(dateStr);
_strtime(timeStr);

ofstream output("info.txt", ios::out);
output << "Start time part 1 " << "\t" << timeStr << " on " << dateStr << "\n";
output << "Start time part 1000000 " << "\t" << timeStr << " on " << dateStr << "\n";
output.close();


return 0;
}

ただし、「info.txt」の出力は、両端の時刻と日付のスタンプが揃えられていないため、ユーザーとしてはあまり読みやすくありません。出力は次のとおりです。

Start time part 1   15:55:43 on 10/23/12
Start time part 1000000     15:55:43 on 10/23/12

私の質問は、後者の部分を調整する方法はありますか?

4

2 に答える 2

8

はい、<iomanip>ヘッダーはsetwマニピュレーターを提供し、出力する各フィールドの幅を に設定できますostreamsetwタブ文字の代わりに各行にマニピュレータを使用すると、出力をより厳密に制御できます。

output << setw(25) << "Start time part 1 " << timeStr << " on " << dateStr << endl;
output << setw(25) << "Start time part 1000000 " << timeStr << " on " << dateStr << endl;

文字列を左側に揃えるには、leftマニピュレータを追加します。

output << left << setw(25) << "Start time part 1 " << timeStr << " on " << dateStr << endl;
output << left << setw(25) << "Start time part 1000000 " << timeStr << " on " << dateStr << endl;
于 2012-10-23T14:04:56.417 に答える
3
int max_align = 10;
output << "Start time part 1 " << "\t" << timeStr 
<< std::string(max_align-timeStr.size(), " ") << " on " << dateStr << "\n";
于 2012-10-23T14:05:21.473 に答える