Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, da bin ich wieder mit meinem NICHTWISSEN. Also ich habe gewisse Daten die ich eine Date schreibe. Die kommen da auch an. Nun will ich sie wieder auslesen, das klappt auch noch, naja ich kann mir die Zeilen, die in der Datei stehen auf dem Bildschrim anzeigen lassen. Will ich den Zeileninhalt aus der Datei allerdings mit einem String vergleichen, klappt es nicht, obwohl sie offensichtlich gleich sind, gibt der Vergleich ein FALSE.

Warum ???

Werden bei der Speicherung noch zusätzliche Steuerzeichen mit abgelegt ???

Gibt es eine Möglichkeit Zeilen aus einer Datei auszulese ohne dabei die Anzahl der maximalen Zeichen angeben zu müssen ???

Zur Visualisierung meinen Problems noch mein Quellcode :

void speichere(){

ofstream ausgabe("d:/prog.txt", ios_base::out);

if (ausgabe.good()){

zustand* hilf;

hilf=zustandsliste;

cout << "______ja______" << endl;

while (hilf!=NULL){

ausgabe << hilf->name << endl;

hilf=hilf->next;

}

ausgabe << "***" << endl;

hilf=zustandsliste;

ereignis* er;

while(hilf!=NULL){

er=hilf->ereignisliste;

while (er!=NULL){

ausgabe << hilf->name << "@" << endl; er=er->nochereignis;

}

hilf=hilf->next;

}

}

}

void lade(){

char zeile[250];

ifstream eingabe("d:/prog.txt", ios_base::in);

if (eingabe.good()){

while (eingabe.eof()==false){

eingabe.get(zeile, 250);

cout << zeile << endl;

if (zeile=="mike"){cout << "GEFUNDEN" << endl;}

DIESER VERGLEICH KLAPPT NICHT !!!!!!!!!!!!!

}

}

}

So nun hoff ich mal auf Hilfe, vielen Dank im Voraus.

Jens

Geschrieben

Hi,

ich hab mich zwar noch nicht so intensiv mit dieser Art des Einlesens aus Dateien beschäftigt, aber kann es ein, das in 'zeile' hinter "mike" noch das ein Zeilenumbruch( "\r" bzw "\n") steht???

Gruß, Eight

Geschrieben

Nochma hi,

Hab mal ein bisschen mit dem Code rumprobiert und dabei festgestellt, das es auch sein kann, das der Vergleich scheitert, da in 'zeile' ja nicht nur "mike" steht. Schließlich ist 'zeile' 250 Zeichen lang (so steht in zeile[0] ein 'm', in Zeile[1] ein 'i' usw. zeile[5] bis zeile[249] sind dabei allerding noch uninitialisiert. Wahrscheinlich werden zum Vergleich aber alle 250 Zeichen herangezogen (nur vermutet, hab wie gesagt selten auf diesem Level zu tun).

Gruß, Eight

Geschrieben
Originally posted by unwissender2002

if (zeile=="mike"){cout << "GEFUNDEN" << endl;}

<Gebetsmühle>

Man kann in C/C++ char-Strings nicht mit == vergleichen.

</Gebetsmühle>

Dabei wird nur ein Zeigervergleich gemacht, d.h. die Startadresse von zeile wird mit der Startadresse des Literals "mike" verglichen. Die werden nie gleich sein.

Zum Vergleichen gibt es strcmp, wenn eine bestimmte Anzahl Zeichen verglichen werden soll, strncmp. Achtung: Diese Funktionen liefern Null, wenn die Strings übereinstimmen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...