String in .txt Datei suchen?

Indem du einfach die Startposition als zweiten Parameter angibst von der ab gesucht werden soll.

Moin,

so wie hier von deepthroat schon beschrieben !! Hast Du das denn jetzt schon mal SO ausprobiert ? ? ?

Übrigens müsstest Du in Deiner if-Anweisung prinzipell nur klammern ... bspw. so:
Code:
if( (found=c.find(Tag)) != string::npos )
macht hier aber in dieser Form keinen Sinn, da Du Äpfel (bool) mit Birnem (npos) vergleichst ...

Gruß
Klaus
 
Hi.
Code:
if( (found=c.find(Tag)) != string::npos )
macht hier aber in dieser Form keinen Sinn, da Du Äpfel (bool) mit Birnem (npos) vergleichst ...
Nee, nee. Das ist dann schon so OK. string::npos ist ein string::size_type und find liefert auch einen string::size_type. Beachte das es sich um den Zuweisungsoperator handelt und nicht um den Vergleichsoperator.

Gruß
 
Jetzt habe ich den Code so geändert:

Code:
    string c, Tag, Value;
    size_t found;
    ifstream f;

    Tag="StrToSearch";
    f.open("Filename.txt");
    if(!f.good())
    {
        return false;
    }
      
    getline(f, c);
    found=c.find(Tag);
    if(found!=string::npos)
    {
        Value=c.substr(found+Tag.length()+1); //1 steht für "="
        cout << Value << endl;
    }
    f.close();    
    return 0;
Es geht schon, danke!

Nun habe ich einen String gemischt in Html-Code wie:
xxx = 111<BR>StrToSearch1 = 222<BR>yyy = 333<BR>StrToSearch2 = 444<BR>...
über "Value=c.substr(found+Tag.length()+1);" bekomme ich
222<BR>yyy = 333<BR>StrToSearch2 = 444<BR>...
Wie kann ich den Rest bis auf "222"(es muss nicht unbedingt eine dreistellige Zahl sein) abschneiden?
 
Jetzt habe ich den Code so geändert:

Code:
    string c, Tag, Value;
    size_t found;
    ifstream f;

    Tag="StrToSearch";
    f.open("Filename.txt");
    if(!f.good())
    {
        return false;
    }
      
    getline(f, c);
    found=c.find(Tag);
    if(found!=string::npos)
    {
        Value=c.substr(found+Tag.length()+1); //1 steht für "="
        cout << Value << endl;
    }
    f.close();    
    return 0;
Es geht schon, danke!

Nun habe ich einen String gemischt in Html-Code wie:
xxx = 111<BR>StrToSearch1 = 222<BR>yyy = 333<BR>StrToSearch2 = 444<BR>...
über "Value=c.substr(found+Tag.length()+1);" bekomme ich
222<BR>yyy = 333<BR>StrToSearch2 = 444<BR>...
Wie kann ich den Rest bis auf "222"(es muss nicht unbedingt eine dreistellige Zahl sein) abschneiden?

Moin,

bin jetzt ein wenig verwirrt ... :confused:
Was genau willst Du denn nun ermitteln ? ?
"StrToSearch" oder die "222" ? ? ?

Und wenn der Aufbau immer so ist, wie von Dir beschrieben, dann schneide doch einfach den Rest ab dem folgen '<' ab ....

Gruß
Klaus
 
Was genau willst Du denn nun ermitteln ? ?
"StrToSearch" oder die "222" ? ? ?
222 soll das Ziel sein, daher habe ich vorerst nach "strToSearch" gesucht, weil es auch noch viele andere Werte (z.B. 111) gibt, die ich nicht brauche. Und "strToSearch" dient eingentlich als Identifier.
Und wenn der Aufbau immer so ist, wie von Dir beschrieben, dann schneide doch einfach den Rest ab dem folgen '<' ab ....
Genau das ist meine jetzige neue Frage:)
 
Moin,

ich sehe jetzt gerade erst, dass Du mit "StrToSearch1" bis "StrToSearchn" arbeitest ;)

Dann solltest Du auch ggf. genau danach suchen, oder willst Du Dich von Vorkommen zu Vorkommen hangeln ? ? ?

Ich verstehe auch Deine konkrete Aufgabenstellung noch immer nicht wirklich :rolleyes:

Was genau ist Dir denn VOR der Suche bekannt? Wodurch entscheidest Du, ob Dein gesuchtes Ergebnis hinter "StrToSearch1" steht oder hinter "StrToSearch28" ?
Oder weißt Du, dass Du nach "222" sucht ? ? ?
Wenn ja, dann such direkt danach ^^

Gruß
Klaus
 
Moin,

ich sehe jetzt gerade erst, dass Du mit "StrToSearch1" bis "StrToSearchn" arbeitest ;)

Dann solltest Du auch ggf. genau danach suchen, oder willst Du Dich von Vorkommen zu Vorkommen hangeln ? ? ?

Ich verstehe auch Deine konkrete Aufgabenstellung noch immer nicht wirklich :rolleyes:

Was genau ist Dir denn VOR der Suche bekannt? Wodurch entscheidest Du, ob Dein gesuchtes Ergebnis hinter "StrToSearch1" steht oder hinter "StrToSearch28" ?
Oder weißt Du, dass Du nach "222" sucht ? ? ?
Wenn ja, dann such direkt danach ^^

Gruß
Klaus
Da hast du schon recht. Ich soll das Beispiel schon anders nennen.:rolleyes:

Ich konzentriere mich jetzt nur auf "strToSearch1 = 222" und möchte den Wert "222" auskritzeln. Alles dahinter soll abgeschnitten werden. Ist das so klarer und besser?;-)
 
naja,. wie man's nimmt .....

Wenn es den wirklich "222" ist, dann such halt nach dem ersten Vorkommen von "222" und nicht nach "StrTo..." :suspekt:

gruß
Klaus
 
naja,. wie man's nimmt .....

Wenn es den wirklich "222" ist, dann such halt nach dem ersten Vorkommen von "222" und nicht nach "StrTo..." :suspekt:

gruß
Klaus
Nee, das ist dann nicht was ich will.

So soll der Algorithmus sein:
1. suchen nach strToSearch;
2. bei Finden, suchen nach den Wert für strToSearch(soll eine Zahl in "strToSearch = 222<BR>..." sein);
3. schneiden diese Zahl vom Reststring ab und gibt den Wert zurück.
 
Zuletzt bearbeitet:
Zurück