2012-10-23 8 views
6

Ich möchte Daten aus meinem Programm in eine Textdatei ausgeben. Hier ist ein funktionierendes Beispiel dafür, wie ich es tun zur Zeit, wo ich auch das Datum/Zeit (ich bin mit Windows):Ausgabe von ofstream ausrichten

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

jedoch die Ausgabe von „info.txt“ ist nicht sehr gut lesbar mir als ein Benutzer, da der Zeit- und Datumsstempel an den Enden nicht ausgerichtet ist. Hier ist die Ausgabe:

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

Meine Frage ist, gibt es eine Möglichkeit, den letzten Teil auszurichten?

Antwort

7

Ja, <iomanip> header stellt den setw Manipulator zur Verfügung, mit dem Sie die Breite jedes von Ihnen ausgegebenen Feldes auf ostream setzen können. Verwendung setw Manipulator für jede Zeile anstelle von Tabulatoren bieten würde engere Kontrolle über die Ausgabe:

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

in Zeichenkette auf der linken Seite ausgerichtet, fügt left Manipulator:

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