2016-05-10 8 views
0

Ich habe eine C++ Code (A.cpp), in dem ich eine Datei bin Oeffnen und einige Daten, um es writting wie folgt:Wie kann man mit C++ die Ausführungszeit aller Klassen zu einer einzelnen Textdatei hinzufügen?

A.cpp 
classA{}; 
A::A() 
{ 
_start = clock(); 
} 
A::~A(){ 
_end = clock(); 
complete_time = _end - _start; 
total_time = total_time + complete_time; 
std::ofstream myfile; 
myfile.open("C:/target/test.txt"); 
myfile << "a.cpp execution time "<<total_time; 
} 

hier So bekomme ich eine Datei als test.txt die Ausführungszeit haben. Nun gibt es eine weitere Klasse, in der ich das gleiche tue wie folgt (B.cpp):

classB{}; 
B::B() 
{ 
_start = clock(); 
} 
B::~B(){ 
_end = clock(); 
complete_time = _end - _start; 
total_time = total_time + complete_time; 
std::ofstream myfile; 
myfile.open("C:/target/test.txt"); 
myfile << "B.cpp execution time "<<total_time; 
} 

Es folgt der Hauptteil:

int main(){ 
A ob; 
B obj; 
return 0; 
} 

So, jetzt bekomme ich TEST.TXT Datei als "a.cpp Ausführungszeit 304", aber es gibt keine Informationen bezüglich der B.cpp Ausführungszeit. Also, bitte schlage vor, wie ich das erreichen kann. Ich möchte eine einzige test.txt-Datei haben, in der ich Ausführungszeit aller Klassen der gleichen Lösung bekomme, in der obigen Lösung gibt es nur zwei Klassen, es könnte eine Anzahl von Klassen geben. Also, bitte hilf mir.

Antwort

2

Wenn Sie den Ausgabestream ohne bestimmte Flags öffnen, ist std::ios::out der Standardwert (siehe z. B. this std::ofstream::open reference).

Dann, wenn wir auch weiterhin ein wenig zu graben, kommen wir zu std::filebuf::open, und wenn Sie Thaty Referenz sehen Sie enthält eine Tabelle, die besagt, dass std::ios::out selbst die gleiche wie die C fopen Funktion mit dem "w" Modus ist, die kürzt die Datei. I.e. Wenn die Datei existiert, werden die darin enthaltenen Daten verworfen.

Um anfügen Daten in eine vorhandene Datei müssen Sie die std::ios::appopen mode verwenden. Wie folgt aus:

myfile.open("C:/target/test.txt", std::ios::out | std::ios::app); 

Mit diesem, wenn die Datei nicht vorhanden ist erstellt, aber wenn es seinen Inhalt existiert erhalten bleibt und jede neue Schreiben in die Datei wird am Ende durchgeführt werden, um das Anhängen Datei.