C++Builder5/Textdateien auslesen

Hallo!

Ich habe folgendes Problem mit dem C++ Builder 5:
Ich möchte eine Textdatei zeilenweise in eine TStringList einlesen.
Bisher habe ich dafür folgenden Code verwendet:

 TStringList\* liste = new TStringList();

 liste-\>Clear ();

\*\*\*\* char buff[80];


 ifstream infile;

 infile.open(fname.c\_str()); // fname ist ein Stringvariable, in der der Dateiname steht

 if (!infile) return 0;

 while (!infile.eof())
 {

 infile.getline (buff, sizeof(buff));
 liste-\>Add (buff);

 }

 infile.close ();

Dieser hat allerdings den Nachteil, das keine beliebig lange Zeilen eingelesen werden können , sondern nur so lange Zeilen, wie der Buffer allociiert wird (mit **** markierte Zeile, in diesem Fall 80).

Wie kriege ich es hin, beliebig lange Zeilen einzulesen ?
Am liebsten wäre mir ein kurzes Codebeispiel, da ich noch Anfänger bin.

Danke schonmal,
Markus

Hi,

in der STL (C++ standard Template library) gibt es objekte vom Typ string - das ist das Werkzeug, das Du verwenden solltest.

TStringList* liste = new TStringList();
liste->Clear ();

Da gibt es ebenfalls list Templates. Die wuerde ich an Deiner Stelle verwenden (also list liste = new list:wink:, da so Dein code portabel bleibt (oder ist TStringList auch was aus der STL?).

Es folgt ein Beispiel, das einen File einliest und in einen anderen file wieder ausspuckt. Musst Du mit Deiner Liste natuerlich noch umbauen. Das Beispiel stammt aus dem sehr empfehlenswerten Buch „Thinking in C++“ von Bruce Eckel, frei downloadbar unter http://www.bruceeckel.com/ :

//: C02:Scopy.cpp
// Copy one file to another, a line at a time
#include
#include
using namespace std;
int main() {
ifstream in(„Scopy.cpp“); // Open for reading
ofstream out(„Scopy2.cpp“); // Open for writing
string s;
while(getline(in, s)) // Discards newline char
out