Zeichenfolge ersetzen, Zeichen suchen



  • maho schrieb:

    Das .h macht Null Unterschied, so viel weiß ich auch und hab ich auch durch ausprobieren herausbekommen.

    nicht ganz
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ



  • @maho: Tut mir leid das ich mich jetzt erst wieder melde, aber ich hab gestern
    Abend nicht mehr hier reinschauen koennen. Fuer std::replace musst du die
    Headerdatei 'algorithm' includieren.

    mfg
    v R



  • Wie auch immer, ist zwar gut zu wissen, werd ich mir auch merken, aber es bringt mich nicht weiter, da die Fehlermeldung

    D:\Umwandlung.cpp(232) : error C2039: 'replace' : Ist kein Element von 'std'
    D:\Umwandlung.cpp(232) : error C2065: 'replace' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.

    durch Weglassen/Hinzufügen der .h-Endung nicht verschwindet.



  • maho schrieb:

    Wie auch immer, ist zwar gut zu wissen, werd ich mir auch merken, aber es bringt mich nicht weiter, da die Fehlermeldung

    D:\Umwandlung.cpp(232) : error C2039: 'replace' : Ist kein Element von 'std'
    D:\Umwandlung.cpp(232) : error C2065: 'replace' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.

    durch Weglassen/Hinzufügen der .h-Endung nicht verschwindet.

    Das ist merkwuerdig, denn bei mir funktioniert folgendes:

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int main() {
        string str("Danki");
        string oldChar("ke");
        char        newChar('e');
            replace(str.begin(), str.end(), oldChar, newChar);
            cout<<str<<std::endl;
        return 0;
    }
    

    ohne Probleme.

    mfg
    v R



  • Danke, virtuell Realisticer, aber auch das Includen von 'algorithm' führt zu einem "Fehler in Anwendung" (wie oben schonmal erwähnt). Um es nochmal genau zu zitieren. Es wird zwar nach der Compilierung gesagt: 0 Fehler, 0 Warnungen, aber das nach dem Kompilieren erscheinende "Fehler in Anwendung"-Fenster besagt:
    "Die Anweisung in '0x0040ef8c' verweist auf Speicher in '0xcccccccc'. Der Vorgang 'read" konnte nicht auf dem Speicher durchgeführt werden."



  • Liest du vielleicht irgendwo ueber Arraygrenzen hinweg oder sowas?

    Koenntest du den Code mal hier: http://rafb.net/paste/ posten und dann den
    Link hier reinstellen?

    mfg
    v R



  • virtuell Realisticer schrieb:

    Das ist merkwuerdig, denn bei mir funktioniert folgendes:

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int main() {
        string str("Danki");
        string oldChar("ke");
        char        newChar('e');
            replace(str.begin(), str.end(), oldChar, newChar);
            cout<<str<<std::endl;
        return 0;
    }
    

    ohne Probleme.

    mfg
    v R

    Meiner Meinung nach ist da ein Fehler drin.

    Müssen nicht oldChar und newChar vom gleichen Datentyp sein? 😕



  • Super, virtuell, funktioniert jetzt doch. Naja, einem Anfänger muss man eben manchmal ein ganzes Programm schreiben, damit man sieht, wo der Fehler liegt. Hatte das using namespace nicht drin. Außerdem hatte ich die Ausgabe in einer anderen Funktion drin. Ich weiß nicht was, aber eins von den beiden Sachen hat zu dem read-Feher geführt. Danke Euch allen ! jetzt werd ich nur nochmal ein bißchen damit rumspielen müssen um es wirklich zu kapieren und anwenden zu können.



  • template<caass FwdIt, class T>
        void replace(FwdIt first, FwdIt last, const T& vold, const T& vnew);
    

    Das Template kann ja nicht 2 verschiedene Datentypen annehmen



  • Ja, Horst, hast recht, ich hatte es eben mit Einzelzeichen ersetzen probiert und das hat geklappt, mit Zeichenketten kommt Deine Fehlermeldung.



  • Horst2 schrieb:

    template<caass FwdIt, class T>
        void replace(FwdIt first, FwdIt last, const T& vold, const T& vnew);
    

    Das Template kann ja nicht 2 verschiedene Datentypen annehmen

    Ja das stimmt. Das kommt von c&p. Hatte noch ein anderes Stueck Code getestet :).

    mfg
    v R


Anmelden zum Antworten