Textdatei einlesen

Hi zusammen,
folgende Voraussetzung:
eine Textdatei, die om folgenden Format aufgebaut ist:
String-Tab-String-Tab-String-…-String\r\n
String-Tab-String-Tab-String-…-String\r\n

Sie sieht also aus wie eine normale Tabelle. Wie man sich leicht denken kann, möchte ich die einzelnen Strings diversen Strings in meinem Quellcode zuordnen. Das schien mir eigentlich gar nicht so schwer, und ich probierte folgenden einfachen Code:

Prios usw. so definiert: char KPrio6[50][50];

if (!Datei == NULL)
{
for (Anzahl = 0; Anzahl > KNummer[Anzahl];
Datei >> KName[Anzahl];
Datei >> KPrio1[Anzahl];
Datei >> KPrio2[Anzahl];
Datei >> KPrio3[Anzahl];
Datei >> KPrio4[Anzahl];
Datei >> KPrio5[Anzahl];
Datei >> KPrio6[Anzahl];
Datei >> KPrio7[Anzahl];
Datei >> KPrio8[Anzahl];
Datei >> dummy; // soll End of Line-Zeichen aufnehmen

Application->MessageBox(KNummer[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KName[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio1[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio2[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio3[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio4[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio5[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio6[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio7[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(KPrio8[Anzahl], „Meldung“, MB_OK);
Application->MessageBox(dummy, „Meldung“, MB_OK);

}
else
break;
}
}
else
{
Application->MessageBox(„Fehler“, „Meldung“, MB_OK);
}

Diese Schleife gibt jedoch drei Zeichen zu viel aus und ich habe offenbar Probleme, das Zeilenende entsprechend abzufangen.
Habe ich an einer Stelle einen Denkfehler, oder geht es auf diese Art und Weise überhaupt nicht, weil Steuerzeichen nicht erkannt/eingelesen werden? Wie kann man es anders machen? Als Entwicklungsumgebung steht mir Borland C++ Builder 4 zur Verfügung.

Gruss,
ein ziemlich frustrierter C++ Einsteiger…
Harald Faber

Hi,

Ich sehe den Fehler in Deinem Code nicht, trotzdem ein paar „Ratschlaege“.

Prios usw. so definiert: char KPrio6[50][50];

Da rollen sich einem die Fussnaegel hoch :wink:
Verwende die C++ Bibliotheken, damit gewinnt Dein Code ungemein! Statt char* verwende besser string (Klasse aus der STL) und statt eines Arrays besser einen vector (ebenfalls in der STL) also:

#include 
#include 
#include // Filestream
#include // C-Lib
using namespace std;
 int main(int argc, char\* argv[]) {
 assert(argc == 2);
 ifstream in(argv[1]);
 assert(in);
 vector strings;
 vector::iterator w;
 const int sz = 255;
 char buf[sz];
 while(in.getline(buf, sz))
 strings.push\_back(buf);
_Kopiert aus http://www.bruceeckel.com/stlsimpl.html_

Nu haste die Zeilen in strings. Die Strings kannst Du an bestimmten Zeichen (z.B. whitespaces) splitten, so dass Du einen vector > foo kriegst. Dann kannst Du die Zahl der Worte in den Zeilen zaehlen (for(unsigned int i = 0; i

Thx, werde mir das wohl mal näher zu Gemüte führen müssen, mal eben überfliegen und verstehen ist nicht…hatte den Tip mit Vektoren auch schon mal erhalten, schien mir eigentlich etwas zu kompliziert und war der Meinung, dass es einfacher gehen muss…
Kannst mir gerne die String-Erweiterung zumailen, bin aber bis Donnerstag offline.
Noch mal danke!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]