str.find problem



  • hallo

    ich hab in einer schleife folgendes stehen

    std::string tempstr;
    tempstr=Text[ii];
    std::cout << tempstr;   //funktioniert
    std::cout << Text[ii];  //funktioniert      
    std::cout << tempstr.find("#"); //funktioniert nicht
    

    ich verstehe nicht warum ich nicht den inhalt von Text[ii] nach "#" durchsuchen kann? das ergebniss ist immer eine gigantische Zahl z.B.4294967295

    hoffe jmd kann mir helfen.



  • Du vergleichst nicht mit std::string::npos, welches definiert ist als std::string:size_type(-1), das ist deine Zahl.



  • Was erwartest du denn, was find zurückgibt? Du bekommst entweder die Position des Suchstrings oder npos.

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



  • Schau mal bitte in die Links in meiner Signatur, vor allem im ersten Link den Punkt zum Thema "funktioniert nicht".



  • Danke

    war mein fehler ich dachte es kommt -1 zurück und nicht npos.

    @mod
    1. habe ich die Frage präzise gestellt die antworten sind beide genau das was ich gesucht habe
    2.manchmal steht man nun mal auf dem schlauch und was sollte ich noch mehr schreiben als es kommt eine gigantische zahl zurück und am meinem namen könnte man erkennen das ich c/c++ nicht so oft verwende deswegen ist es für mich sehr ungewöhnlich wenn eine zahl zurückkommt statt nen Fehler oder -1!



  • c_anfänger schrieb:

    1. habe ich die Frage präzise gestellt

    Ansichtssache. 😉



  • c_anfänger schrieb:

    1. habe ich die Frage präzise gestellt die antworten sind beide genau das was ich gesucht habe

    Nein hast du nicht, du hast bei den Codezeilen Begriffe wie "funktioniert/funktioniert nicht" verwendet, die Zeilen funktionieren aber allesamt, kein Compiler wird dir hier einen Fehler liefern. Auch wenn deine weitere Beschreibung den "Fehler" beschreibt solltest du es Lesern einfach machen und solch schwammige Begriffe nicht verwenden (Hier wäre eher ein Text wie "Liefert 4294967295 statt -1" hilfreich gewesen). Denk dran das man von oben nach unten liest, und "funktioniert nicht" hier einfach nicht greift.

    Auch der Titel deines Threads ist nicht unbedingt glücklich gewählt, "Problem"/"Hilfe"... geben kein Eindruck auf die wirkliche Problemstellung. Etwas wie "str.find liefert unerwartetes Ergebnis" wäre von der Aussagekraft wesentlich höher.

    c_anfänger schrieb:

    manchmal steht man nun mal auf dem schlauch und was sollte ich noch mehr schreiben als es kommt eine gigantische zahl zurück und am meinem namen könnte man erkennen das ich c/c++ nicht so oft verwende deswegen ist es für mich sehr ungewöhnlich wenn eine zahl zurückkommt statt nen Fehler oder -1!

    Wie gesagt, zumindest einmal in die Hilfe zu der Methode schauen ist dennoch nicht verkehrt. Wenn das das dort stehende nicht hilft, so kann man immer noch fragen.


Anmelden zum Antworten