2012-10-23 33 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";