was is hier falsch ??



  • Das hier ist ein Konstruktor, der einen string überliefert bekommt und in einer variablen abspeichert.
    In der andren Variablen sollen alle Buchstaben durch "-" ersetzt werden.

    allerdings wird nur der erste buchstabe verändert.

    Strichstring(std::string a)
      {
        orgstring=a;
    
        strichstring=a;
    
        for(int i=0;i<=strichstring.length();++i)
        {      
        if(isalpha(orgstring[i])==true)
        {
        strichstring[i]='-';                        
        }                
        }
    
      }
    

    Freue mich über Hilfe



  • schau dir den rückgabewert von isalpha() an.
    du durchläufst auch die schleife einmal zu oft.
    es ist unschön length() bei jedem durchlauf zu testen.



  • also müsste ich erstmal length()-1 schreiben ... das hab ich ja noch verstanden

    aber was meinst du mit isalpha ?

    isalpha gibt doch true wenns ein buchstabe ist also müsste das so doch stimmen oder ?

    und soll ich length()-1 dann in einer variablen speichern und diese durchlaufen also länge angeben ?



  • ich mach das so:

    #include <string>
    #include <iostream>
    
    using namespace std;
    
    void strichstring( string &str )
    {
        string::size_type size = str.length( );
    
        for( string::size_type i = 0; i < size; ++i ) {
    
            str[ i ] = isalpha( str[ i ] ) ? '-' : str[ i ];
        }
    }
    
    int main( )
    {
        string str = "Hello!";
        cout << str << endl;
        strichstring( str );
        cout << str << endl;
    }
    

    Greetz, Swordfish



  • danke scheint zu funzen !

    ich probiers dann mal in meine klasse einzubaun .. falls es nich klappt meld ich mich nochmal ^^


Anmelden zum Antworten