Zeichen einzeln herausbekommen in einem String



  • Abend,

    Leider komm ich mit meinem Wissen nicht mehr vorran.

    Also, ich will eine Funktion schreiben, die mir die Anzahl der Ziffern (0-9) von einem String als int zurückliefert.

    Könnte mir jemand den Befehl geben, mit dem ich "EIN ZEICHEN" in einer for-Schleife überprüfen kann.

    Bräuchte jediglich nur den String-Befehl... mehr nicht (Will´s selber schaffen 😋 )

    Wäre sehr dankbar!

    Lg Mentras



  • Mentras schrieb:

    Könnte mir jemand den Befehl geben, mit dem ich "EIN ZEICHEN" in einer for-Schleife überprüfen kann.

    Ich nehme an, du meinst operator[] oder at() .

    P.S.: In C++ spricht man eigentlich nicht von Befehlen, eher von Funktionen und Anweisungen. Der Begriff Befehl wird vor allem im Zusammenhang mit dem Prozessor (Assembler) verwendet.



  • Oh Danke, jetzt weiß ich´s besser 🙂

    Könntest du mir auch die Überladungen zeigen?

    Lg Mentras



  • Die beiden Memberfunktionen existieren (abgesehen von der const -Qualifizierung) jeweils nur einmal.

    Aber solche Dinge kannst du bestens auf www.cplusplus.com nachsehen. Sehr viele Funktionen und Klassen der Standardbibliothek sind dort genaustens beschrieben, inklusive Auflistung der Schnittstellenfunktionen und oft sogar mit Codebeispiel. Ich würde die C++-Referenz gerade in den Favoriten speichern.



  • Vielen Dank 🙂

    Für die, die "vielleicht" das selbe Problem hatten:

    http://www.cplusplus.com/reference/string/string/operator[]/

    Danke nochmal Nexus 🙂



  • string s = "ab01";
    if ( s.operator[0] == '0' )
    cout >> "Zahl gefundend";



  • Fehler entdeckt,...und was für einer...

    Danke Operator,...^^



  • for(int i=0; i < x.length();i++)
    	{
    		if (x.operator[i] == '0' 
    			|| x.operator[i] == '1'
    			|| x.operator[i] == '2'
    			|| x.operator[i] == '3'
    			|| x.operator[i] == '4'
    			|| x.operator[i] == '5'
    			|| x.operator[i] == '6'
    			|| x.operator[i] == '7'
    			|| x.operator[i] == '8'
    			|| x.operator[i] == '9')
    			rueckgabe++;
    	}
    		return(rueckgabe);
    }
    

    Ich werd nicht schlau 😞
    Was ist nun falsch?



  • Wieso verwendest du den Index-Operator nicht richtig? Das hätte ja auch im Codebeispiel in deinem Link gestanden... 😉

    if (x[i] == '0')
    

    Davon abgesehen kannst du deine OR-Bedingungen über eine Schleife oder noch besser eine Eingrenzung und am allerbesten über Locales lösen.

    Und gewöhn dir gleich an, zu sagen, wo du einen Fehler bekommst, bzw. was nicht funktioniert.



  • was ging denn nicht?

    übrigens:

    int GetZahlenAusmStringAberFix(const std::string &x)
    {
        int rueckgabe(0);
    
        for(int i=0; i < x.length(); i++)
        {
            if (x[i] >= '0' && x[i] <= '9')
                rueckgabe++;
        }
    
        return rueckgabe;
    }
    

    bb



  • operat0r schrieb:

    string s = "ab01";
    if ( s.operator[0] == '0' )
    cout >> "Zahl gefundend";

    Weil er mich verwirrt hat...

    Nun, Gut das Programm funktioniert.

    Danke Nexus für deine Hilfe.

    Du bekommst meine berüchtigte Rote Rose:

    http://www.fleurop.de/Images/Product_Images/xichliebe_l.jpg

    Lg Mentras



  • Naja, bei gewissen Leuten musst du manchmal etwas vorsichtig sein. Die Referenz ist da meistens sicherer... 😉

    Hehe, danke für die Rose. 🙂


Log in to reply