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 ^^