2012-10-23 3 views
6

私のプログラムからテキストファイルにデータを出力したいと思います。ここで私は、日付/時刻などが、私は現在、それを行う方法を示す実施例、(私はWindowsを実行しています)です:ofstreamの出力を整列する

#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 

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

答えて

7

はい、<iomanip>ヘッダーにsetwマニピュレータがあり、出力する各フィールドの幅をostreamに設定できます。代わりに、タブ文字の行ごとにsetwマニピュレータを用いて、出力上に厳密な制御を提供するであろう:

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; 
2
int max_align = 10; 
output << "Start time part 1 " << "\t" << timeStr 
<< std::string(max_align-timeStr.size(), " ") << " on " << dateStr << "\n"; 
関連する問題