In String



  • Kann ich auch zwei Sachen verbinden?

    Ich suche nach "Life" und i, wobei i ein Integer mit irgendeinem Wert ist, d.h. mein String soll z. B. "Life4" sein?

    Ich will nicht einfach nach "Life4" suchen, das wäre zu umständlich.



  • Bei komplizierteren Suchen, solltest Du in Erwägung ziehen eine Bibliothek für den Umgang mit regulären Ausdrücken, wie zum Beispiel boost::regex, zu benutzen. Um das Konzept besser zu verstehen, kann es aber nicht schaden für solch einfache Dinge mal selbst einen kleinen endlichen Automaten zu schreiben.



  • So kompliziert wird meine Suche nicht. Ich denke es wäre zu aufwendig eine Bibliothek zu benutzen.

    Gibt's noch andere Möglichkeiten?



  • Ignoriert den Post ich war verwirrt. ^^



  • mal was Einfaches 😉

    #include <iostream>
    
    bool find_char(char const * SuchSring, char const * SuchText)
    {
        if(SuchString == NULL || SuchText == NULL) return false;
    
        char * c = SuchString;
        while(c++) if(c == SuchText) return true;
    
        return false;
    }
    

    Verwendung:

    int main()
    {
        if(find_char("Bla Bla 1", "1")) cout << "jep" << endl;
        if(find_char("Bla _ Bla...", "_")) cout << "jep" << endl;
    
        return 0;
    }
    


  • So einfach wie du es gern haettest, wird es nicht gehen ...

    entweder du baust dir selber nen algo ...

    bspw. nach "Life" suchen und die nachfolgenden zeichen manuell untersuchen

    oder du verwendest Regular expressions ... und das natuerlich mit ner lib, selber implementiweren wirst das nich wollen ^^

    Ciao ..



  • wer lesen kann, ist klar im Vortail 😃

    Hier noch 'n Versuch:

    #include <iostream>
    
    bool find_char(char const * SuchSring, int Zahl)
    {
        if(SuchString == NULL) return false; // String ist Leer
    
        char i[2];
        itoa(Zahl, i, 10);
    
        char * c = SuchString; 
    
        while(c++) if(c == i) return true;
    
        return false;
    }
    
    int main()
    {
        int i = 4;
        if(find_char("Life4", i)) << cout "jep" << endl;
        return 0;
    }
    


  • if(c == i) return true;

    @WinieX, diese Abfrage wird immer falsch sein, da du dort zwei verschiedene char* miteinander vergleichst, d.h. die Addressen und nicht die Stringinhalte...



  • Kann man auch überprüfen, ob ein Char eine bestimmte Zeichenkette enthält?



  • becks21 schrieb:

    Kann man auch überprüfen, ob ein Char eine bestimmte Zeichenkette enthält?

    ja, aber man nimmt einfach std::string



  • Ein char kann keine Zeichenkette enthalten, dazu reicht der Platz nicht aus 😉

    Wenn es dir um char*'s geht (aka C-Strings), die kannst du über strcmp() (vergleiche zwei Zeichenketten), strstr() (suche Teilstrings) etc miteinander verrechnen. Aber einfacher ist es imho, stattdessen std::string zu verwenden.

    (im Magazin gibt es auch einen Artikel darüber, was Strings alles können)



  • Th schrieb:

    if(c == i) return true;

    @WinieX, diese Abfrage wird immer falsch sein, da du dort zwei verschiedene char* miteinander vergleichst, d.h. die Addressen und nicht die Stringinhalte...

    ich gebs zu, hab den Code getippt ohne genauer zu gucken 😃 Sollte auch nur als Bsp. dienen...



  • ich gebs zu, hab den Code getippt ohne genauer zu gucken Sollte auch nur als Bsp. dienen...

    Nein, so einen Code kann nur ein Koffer schreiben - das hat mit genau gucken nix zu tun. Entweder man kennt sich aus und weiss dass es nicht so einfach ist, oder man kennt sich nicht aus aber versucht nicht anderen was zu erzählen von was man nix versteht, oder man ist ein Koffer.



  • hustbaer schrieb:

    ich gebs zu, hab den Code getippt ohne genauer zu gucken Sollte auch nur als Bsp. dienen...

    Nein, so einen Code kann nur ein Koffer schreiben - das hat mit genau gucken nix zu tun. Entweder man kennt sich aus und weiss dass es nicht so einfach ist, oder man kennt sich nicht aus aber versucht nicht anderen was zu erzählen von was man nix versteht, oder man ist ein Koffer.

    Na so einen Spruch kann nur ein Anfänger bringen 😃
    Erstens: bist du selber ein Koffer und zweiten: würde ich nichts schreiben, wovon ich keine Ahnung habe! Versuch mir doch das Gegenteil zu beweisen



  • for(int i = 0; i<strlen(text); i++) {
        if((text[i]>='0' && text[i]<='9') || text[i]=='_') return true;
    }
    return false;
    

Anmelden zum Antworten