find funktioniert trotz vorhandenem Eintrag nicht
-
hallo, ich will den inhalt einer datei in einem listenfeld speicher (pro zeile). wenn ich nun folgenden code benutze, zeigt er alles an, und das steht dann nicht in der ersten Listenfeldzeile, sondern in der 10 und wenn ich ein !setzt zeigt er nichts an, obwohl der gesuchte Text in der 1. Zeile steht.Jemand eine Ahnung, woran das liegt?
if(infile){ i=0; while(getline(infile,line[i])) { if(i==1){ if(!(line[i].find("Mrcg"))){ //mit ! nichts und ohne alles SendMessage(hMyListBox, LB_ADDSTRING, NULL, (reinterpret_cast<LPARAM>(line[i].c_str()))); }; }; i++; } cin.get();
-
weil deine if abfrage dieses verhindert
if(infile) { i=0; while(getline(infile,line[i])) { // wenn es in der ersten zeile steht und er die erste zeile // einliesst dann ist 0 if(i==1) { if(!(line[i].find("Mrcg"))) { SendMessage(hMyListBox, LB_ADDSTRING, NULL, (reinterpret_cast<LPARAM>(line[i].c_str()))); } } i++; }
-
ok, hab den code in folgendermaßen abgeändert:
if(infile){ i=0; while(getline(infile,line[i])) { if(i>=0){ if(!(line[i].find("hallo"))){ SendMessage(hMyListBox, LB_ADDSTRING, NULL, (reinterpret_cast<LPARAM>(line[i].c_str()))); }; }; } cin.get(); i++; }problem besteht jedoch weiter
-
wie sieht deine datei den aus?
-
BTW nach den geschweiften Klammern brauchst du kein ;

-
OK, dass Problem mitt den vielen freien Feldern ist gelöst. eigentlich ganz logisch: Die Liste wurde sortiert und dabei kamen die leeren am Anfang. Frag mich zwar, wieso er überhaupt leere hinzugefügt hat, aber dass ist jetzt behoben. Besteht nur nach das Problem, dass er meinen string ausschnitt nicht findet
ok, er findet den string nur, wenn der ausschnitt ganz am anfang steht. Wieso dass? sollte er nicht alles durchsuchen?
-
Ich nehme mal an, dass find die Position zurückliefert (ich weiß es nicht genau), daher muss find NULL bzw. 0 zurückliefern, damit !find true wird. Was genau liefert find, wenn er nichts findet / wie unterscheidet sich dieser Wert von dem bei Fund an Stelle 0?
-
-
Ich habe dort aber nicht gefunden, was geliefert wird, wenn nichts gefunden wird

-
sorry, ich dachte es geht daraus hervor.
if(line[i].find("hallo") != string::npos) // gefunden