2012-10-23 30 views
6

我希望從我的程序輸出數據到文本文件。這裏是展示我如何做到這一點目前,工作的例子,我還包括日期/時間(我運行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 

我的問題是,有沒有辦法對齊後者?

回答

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";