txt Datei einlesen



  • Hallo
    Ich versuche das schon seit ein paar Tagen mit Visual Studio 2008 hinzubekommen. Es gibt ja einige Anleitungen im Internet, aber ich bekomme es immernoch nicht gebacken. Ich habe eine Text Datei mit mehreren Zeilen. Jede Zeile besteht aus mehreren mit ; getrennte Nummern. Ich will nun jede Zeile einzeln auslesen (mit getline?) und diese Nummern in Arrays speichern. Es ist bestimmt eine einfache Sache, habe vorher nur Konsole und mit Borland (Win32 Oberfläche) gearbeitet.



  • Huhu,

    #include <fstream>
    #include <string>
    #include <iostream>
    int main()
    {
        std::ifstream file ( "PFAD") ;
        std::string line;
        if ( !file ) {
            std::cerr << "Datei konnte nicht geöffnet werden oder so...!" << std::endl;
            return 1;
        }
        while ( file.getline(file,line) )
        {
             // Mach was du willst
        }
    }
    

    Das Beispiel ist ungetestet, sollte aber funktionieren... Hoffe ich :xmas1:



  • CStdioFile bietet die Methode ReadLine().



  • Da kommt leider immer ein Fehler in der Zeile 12:

    Fehler 1 error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize)': Konvertierung des Parameters 1 von 'std::ifstream' in 'char *' nicht möglich c:\dokumente und einstellungen\michael jackson\eigene dateien\visual studio 2008\projects\txteinlesen\txteinlesen\Form1.h 126

    return 1; musste ich auskommentieren, da er dort auch meckerte, das void ein Wert zurück gibt.



  • Habs jetzt selber hinbekommen, danke für den Codeschnipsel 😃

    Hier mein jetziger Code, um erstmal testweise alles in einer textBox auszugeben. Allerdings kommt bei NewLine \n immer das Kästchen in die Box, weiß jemand warum?

    http://ottelo.ot.funpic.de/sonstiges/cpp.gif

    std::ifstream file ( "z:\\Uni\\Informatik\\bde.txt") ;
    			std::string line;
    			if (file)
    			{
    				while ( getline(file,line) )
    				{
    					textBox1->AppendText(gcnew String(line.c_str()) + "\n");
    				} 
    			}
    			else MessageBox::Show("Fehler beim Öffnen");
    


  • Lass hier

    textBox1->AppendText(gcnew String(line.c_str()) + "\n");
    

    das + "\n" weg.



  • Dann sag bitte wie Du weitermachen möchtest. Der Code ist ist std:: und nicht MFC.
    In der MFC sieht das anders aus.
    Wie steht sicher in der FAQ.


  • Mod

    Der ist nicht mal std:: der Code ist auch noch C++/CLI dazu 😉



  • Martin Richter schrieb:

    Der ist nicht mal std:: der Code ist auch noch C++/CLI dazu 😉

    ... und damit zählt man File::ReadAllLines(...) sowie String::Split(...) sehr schnell zu den besten Freunden 😉

    Wenn ich allerdings "\\Uni\\Informatik\" lese, wird hier dann eher ANSI C verlangt ...

    Gruß
    foodax


Anmelden zum Antworten