Zeilen aus Datei in AnsiString schreiben



  • Hi Leute

    ich möchte gerne eine Datei die aus mehreren Zeilen besteht Zeile für Zeile auslesen und den Text in einem AnsiString speichern.

    AnsiString text;
    ifstream f("C:\\test.txt");
    f>>text.c_str();  
    f.close();
    

    Ich habe den selben/ähnlichen code schon in einem anderen Programm verwendet und es hat funktioniert.
    Nur diesmal bleibt "text" immer "NULL".
    Die Datei wird geöffnet, das sehe ich daran, das wenn ich mit der Maus auf "f" gehe auch der Dateiinhalt angezeigt wird.

    Vielen Dank im Voraus
    Gruß
    Tobi



  • Hallo

    c_str() gibt einen konstanten Pointer zurück, dort sollste du nicht reinschreiben.

    du hast mehrere Möglichkeiten
    - in der Builder-Hilfe zu AnsiString steht das hier :

    Wenn Sie #include <iostream> oder #define VCL_IOSTREAM angeben, bevor Sie die include-Anweisung für die Datei dstring.h (die normalerweise indirekt durch die Datei vcl.h einbezogen wird) festlegen, können Sie die Streaming-Operatoren (<< und >>) mit AnsiStrings als Argument verwenden:

    ostream& operator << (ostream& os, const AnsiString& arg);
    istream& operator >> (istream& is, AnsiString& arg);

    - du benuttz TFileStream oder TStringList zum Laden der Datei anstatt ifstream

    - du benutzt std::string anstatt AnsiString.

    bis bald
    akari



  • TStringList *datei=new TStringList();
    datei->LoadFromFile("c:\\test.txt");
    String text=datei->Text;



  • delete datei;


Anmelden zum Antworten