[Hilfe] Suchen nach 10stelliger zahl in Text



  • Caligulaminus schrieb:

    string::find()
    http://www.cplusplus.com/reference/string/string/find/

    Falsch. Ich weiß nicht ob du das richtige Meinst (wahrscheinlich nicht), aber jede beliebige Kombination von Zahlenfolgen zu nehmen und sie in string::find zu stecken und zu sehen was passiert ist ziemlich langsam.
    Da ist seine Version die einfachere.



  • C++Guid schrieb:

    ich wäre so vorgegangen in dem ich alle stellen durchgehe und wenn eine zahl gefunden ist prüfen ob die darauf folgenden 9 stellen auch zahlen sind? aber ist etwas aufwendig wie ich finde vll habt ihr eine bessere Idee...

    So ähnlich vielleicht: stattdessen nur in 10er Schritten durch den Text springen und wenn bei jedem Fundort einer Zahl in beide Richtungen versuchen den Match auf 10 Stellen zu erweitern.



  • Ich vermute mal, du willst alle solche Stellen haben und diese nacheinander verarbeiten, oder?

    string eingabe;
    int counter = 0;
    for(size_t i = 0; i != eingabe.size(); ++i){
       if(isZahl(eingabe[i]))
           ++counter;
       else
           counter=0;
       if(counter >= 10){
           //alles von position i-9 bis position i ist ein Zahlencode. hier verarbeiten...
       }
    }
    


  • n schrieb:

    C++Guid schrieb:

    ich wäre so vorgegangen in dem ich alle stellen durchgehe und wenn eine zahl gefunden ist prüfen ob die darauf folgenden 9 stellen auch zahlen sind? aber ist etwas aufwendig wie ich finde vll habt ihr eine bessere Idee...

    So ähnlich vielleicht: stattdessen nur in 10er Schritten durch den Text springen und wenn bei jedem Fundort einer Zahl in beide Richtungen versuchen den Match auf 10 Stellen zu erweitern.

    Edit: sry, richtig!



  • bool first_arg_is_digit(char c, char) { return isdigit(c); }
    
    int main()
    {
      std::string guid = "009asbdfap9usdfha9sdfuasdfa9shf9876503864a98sdbf98abdasd";
      std::string::iterator pos = std::search_n(guid.begin(), guid.end(), 10, '\0', first_arg_is_digit);
      std::cout << guid.substr(pos-guid.begin(), 10) << std::endl;
    }
    


  • otze schrieb:

    Ich vermute mal, du willst alle solche Stellen haben und diese nacheinander verarbeiten, oder?

    string eingabe;
    int counter = 0;
    for(size_t i = 0; i != eingabe.size(); ++i){
       if(isZahl(eingabe[i]))
           ++counter;
       else
           counter=0;
       if(counter >= 10){
           //alles von position i-9 bis position i ist ein Zahlencode. hier verarbeiten...
       }
    }
    

    ja genau nur is die frage ob es nicht eine funktion gibt, die gleich an die besagte stelle springt oder mit die stelle zurrückgibt...? und das alles am besten mit einfachen winapis

    MFG



  • C++Guid schrieb:

    und das alles am besten mit einfachen winapis

    Bitte was?

    @westerwello: bitte std:: vor isdigit schreiben, wenn auch vor alles andere.
    Und ab C++11 könnt' man da auch Lambdas benützen.



  • *benutzen



  • 314159265358979 schrieb:

    *benutzen

    nein, das war schon richtiges Deutsch.

    http://de.wiktionary.org/wiki/benützen

    => Grammarnazi-Fail.



  • Wenn ich etwas kann, dann ist es Deutsch. Dein Artikel gibt mir im Übrigen Recht.



  • * Hacker hat zwei Rechtschreibfehler drin.
    * 314159265358979 hat einen Rechtschreibfehler drin.

    Stand: 17:57:26.



  • Edit: Blödelsinn



  • Ich hab nirgens 'nen Rechtschreibfehler drin'.



  • 314159265358979 schrieb:

    Ich hab nirgens 'nen Rechtschreibfehler drin'.

    Hast Recht, dacht' ich nur. Ich hab benützen übrigens absichtlich geschrieben.



  • * Übrigen gross zu schreiben war schon richtig, aber recht haben schreibt man klein.
    * drin hat kein Apostroph.



  • 314159265358979 schrieb:

    Wenn ich etwas kann, dann ist es Deutsch. Dein Artikel gibt mir im Übrigen Recht.

    gibt er dir nicht. "benützen" ist ein Synonym für "benutzen". Die Schreibweise ist auch richtig, da an der Stelle ein Infinitiv gehört. Also gibt dir der Artikel genau nirgendwo recht und das mit deutsch können... 👎



  • Das Verb "benützen" ist nur die nachträglich angenommene Version des Wortes "benutzen", da viele Leute zu blöd sind, die Deutsche Sprache zu lernen. Deal with it.



  • Grammarnazi schrieb:

    * Übrigen gross zu schreiben war schon richtig, aber recht haben schreibt man klein.
    * drin hat kein Apostroph.

    *Nein. "Ich gebe dir Recht" heißt, ich gebe dir etwas. Und dieses etwas ist das Recht.
    *"Drin" ist die Abkürzung für drinnen. Ist also richtig.



  • 314159265358979 schrieb:

    da viele Leute zu blöd sind, die Deutsche Sprache zu lernen.

    * Deutsche schreibt man klein.
    * Ich sage und schreibe bewusst "benützen" und ich bin stolz drauf.
    * @Hacker: Du hast keine Ahnung.



  • 314159265358979 schrieb:

    Das Verb "benützen" ist nur die nachträglich angenommene Version des Wortes "benutzen"

    Das kannst du sicherlich untermauern. Für mich klingt "benutzen" eher nach der Regularisierung des Wortes "benützen". Unabhängig davon ist es nicht mehr falsch, sobald es in den Wörterbüchern der deutschen Sprache vorkommt. Deal with it.

    Und btw: 👎


Anmelden zum Antworten