zeichen in string ersetzen



  • ja naja dann musst du mit einer schleife den string zeichen für zeichen durchlaufen und jedes mal wenn der . gefunden wurde dir die position merken und dann mit replace ersetzen ;)Versuch dich mal und wenn du nicht weiter kommst, zeigst du einfach den code mit dem du es probiert hast.



  • würd den gesamten string durchgehen (mit iteratoren) und dann halt jede position, an der ein ',' steht durch ein '.' ersetzen...
    replace würd zwar au gehen aber ich würds nich nehmen...

    bb



  • @unskilled was ist deine Abneigung gegen Replace?



  • nach unskilled könnte man es so machen

    #include<iostream>
    #include<string>
    
    int main()
    {
       std::string test = "12.11.1988";
       std::string::iterator  iter;
    
       std::cout<<test<<std::endl;
    
       for(iter = test.begin(); iter != test.end();iter++)
       {
           if(*iter == '.')
           {
               *iter = ',';
           }
       }
       std::cout<<test<<std::endl;
    
    }
    


  • War ja eigentlich gar nicht so schwer wie ich dachte.
    Hier mein Code:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    	string str1 = "Lorem,ipsum,dolor,sit,amet,";
    
    	while(1)
    	{
    	    string::size_type loc = str1.find( ",", 0 );
    
    	    if( loc != string::npos )
    	    {
    		str1.replace(loc,1,".");
    	    }
    
    	    else
    	    {
    		break;
    	    }
    	}
    
    	cout << str1 << endl;
    
    	return EXIT_SUCCESS;
    }
    


  • Firefighter schrieb:

    nach unskilled könnte man es so machen

    #include <iostream>
    #include <string>
    
    int main()
    {
       std::string test = "12.11.1988";
       std::cout<<test<<std::endl;
    
       for(std::string::iterator iter (test.begin()), end = (test.end); iter != end; ++iter)
       {
           if (*iter == '.')
               *iter = ',';
       }
       std::cout<<test<<std::endl;
    }
    

    Firefighter schrieb:

    @unskilled was ist deine Abneigung gegen Replace?

    Sry - dachte, dass replace ne string-basierende funktion war... Hab aber noch ma nachgeguckt - und würd es so doch mit replace machen ^^

    soll heißen: dachte, dass replace strings erwartet - und das hielt ich halt für übertrieben...

    also doch mit std::replace ^^

    bb



  • lool 🙂 nagut so geht es auch wie ich es schrieb, spart den funktionsaufruf 🙂

    EDIT: Es sei dir Verziehen Graf unskilled 🙂



  • ihhgitt...

    entweder:

    #include <iostream>
    #include <string>
    
    int main()
    {
       std::string test = "12.11.1988";
       std::cout<<test<<std::endl;
    
       for(std::string::iterator iter (test.begin()), end = (test.end); iter != end; ++iter)
       {
           if (*iter == '.')
               *iter = ',';
       }
       std::cout<<test<<std::endl;
    }
    

    oder

    #include <iostream>
    #include <string>
    #include <algorithm>
    
    int main()
    {
       std::string test = "12.11.1988";
       std::cout<<test<<std::endl;
       std::replace (test.begin (), test.end (), ',', '.');
       std::cout<<test<<std::endl;
    }
    

    deine variante is da nich gerad die eleganteste - finde ich...

    bb

    edit:
    gut - jz kann ich wieder schlafen - danke : )
    nein - das war nicht an dich, feuerwehrmännchen sondern an den OP...



  • Warum nicht die eleganteste? nur weil du alles zusammen geklatscht hast?:P oder weswegen, ist doch eigentlich die selbe wie deine erste in deinem letzten beitrag.



  • ASSOO...sag das doch 🙂 Schlaf gut :=)


Anmelden zum Antworten