2016-04-18 15 views
4

Ich habe einen einfachen Code erhalten, der abgeschnitten wurde, und ich versuche zu lernen, wie man einfachen Text mit C++ - Bibliotheken liest. Im gleichen Verzeichnis wie das Programm habe ich text1.txt, die Zeilen ASCII-Klartext enthält. Nachdem ich den Code ausführen Ich hatte erwartet, die gleichen Zeichen von text1.txt bei textOut.txt Statt zu erhalten, bei textOut.txt habe ich 100 ZeilenC++ seekg scheint eine Hexadezimaladresse anstelle des eigentlichen Zeichens aus der .txt-Datei zu liefern

0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018 0x7ffdf21fd018

hier ist der Code:

#include <cstdlib> 
#include <stdio.h> 
#include <stdlib.h> 
#include <fstream> 
using namespace std; 

int main() { 

fstream afile; 
afile.open("text1.txt", ios::in); 
ofstream outfile; 
outfile.open("textOut.txt"); 
int counter=0; 
for(counter=0;counter<100;counter++){ 
    outfile << afile.seekg(counter); 
    outfile << "\n"; 
    //printf("%d\n", counter); 
    } 

return 0; 
} 

Antwort

0

seekg returns *this, so ist es überraschend ist, dass die << Betreiber in diesem Fall überhaupt funktioniert.

Eher

outfile << static_cast<char>(afile.get()); 

Volles Programm verwenden:

#include <cstdlib> 
#include <stdio.h> 
#include <stdlib.h> 
#include <fstream> 
using namespace std; 

int main() 
{ 

    fstream afile; 
    afile.open("text1.txt",ios::in); 
    ofstream outfile; 
    outfile.open("textOut.txt"); 
    int counter=0; 
    for (counter=0; counter<100; counter++) { 

     afile.seekg(counter); 
     outfile << static_cast<char>(afile.get()); 
     //outfile << afile.seekg(counter); 
     outfile << "\n"; 
     //printf("%d\n", counter); 
    } 

    return 0; 
} 
+0

Natürlich ist die sucht vollständig redundant. – paddy

Verwandte Themen