Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.