2017-07-26 5 views
-14

Ich mache einen C++ Code in Omnet ++ Simulator, wo ich auf diesen Code stieß. Kann mir jemand bitte erklären, wie diese Sequenz funktioniert?C++ Erklärung

char *st = "data.enc"; 

std::ofstream myfile; 
myfile.open(st,std::ios_base::app); //Please provide explnation for this line 
printf("\n AES encryption:\n"); 
for(i=0;i<4*4;i++) 
{ 
    printf("%02x ",out[i]+l); 

    myfile <<out[i]+l<<"\n"; 
} 

printf("%02x ",out[i]);//What is out[i] ? 
myfile.close(); 
printf("\n\n"); 
+3

'std :: ofstream' ist ein Standard, gut dokumentierter Typ. Oder fragen Sie sich, wie kommt es zu einem Mitglied Funktionsaufruf? – StoryTeller

+0

http://en.cppreference.com/w/cpp/io/ios_base/openmode – Steeve

+0

Sie müssen uns auf "out" helfen, es ist nirgendwo im angegebenen Code definiert. Wenn es kein Array (oder ein Zeiger auf ein Array) von Ganzzahlen ohne Vorzeichen ist, wird es dir schlecht gehen. – user4581301

Antwort

3
std::ofstream myfile; 
myfile.open(st,std::ios_base::app); //Please provide explnation for this line 

öffnet die Datei im Append-Modus. Das bedeutet, dass die Einfügungen am Ende der Datei angehängt werden, anstatt sie zu überschreiben.

for(i=0;i<4*4;i++) 
{ 
    printf("%02x ",out[i]+l); 

    myfile <<out[i]+l<<"\n"; 
} 

nimmt die 16 ersten Elemente in und:

printf("%02x ",out[i]+l); 

sie in Hexadezimal-Format druckt, als ob sie Bytes waren. Die 0 bedeutet, füllen Sie mit 0 bis zum Erreichen der gewünschten Länge (2). x bedeutet hexadezimal drucken.

myfile <<out[i]+l<<"\n"; 

Hängt den Inhalt heraus Zugabe 1.

printf("%02x ",out[i]);//What is out[i] ? 

Druckt [16] (diesmal ohne eine Zugabe) in 2-stelliger Hexadezimal-Format.

myfile.close(); 

Schließt die Datei.

printf("\n\n"); 

Druckt zwei leere Zeilen.

+0

Vielen Dank für Ihre Begeisterung. Jetzt frage ich mich, woher meine Datei die Werte liest und darin schreibt. Alle Ergebnisse bitte? – Daks

+0

Std :: ofstream myfile; myfile.open (st, std :: ios_base :: app); – Daks