Frage zu Boost::replace_all
-
Hallole.
Ich habe nach einer einfachen Möglichkeite gesucht, alle bestimmte vorkommende Zeichen in einem String zu ersetzen und bin dabei auf http://www.boost.org/doc/html/replace_all.html gestoßen.Also replace_all.
Sieht bei mir so aus:
boost::replace_all("_",zw_name,"-");Also alle "-" in diesem String durch "_" ersetzen.
Nur kennt der Compiler diesen Befehl natürlich nicht,da die ensptechende *.hpp DAtei noch eingebunden werden muss.
Nur welche?
Aus dem o.g. Link werde ich nicht schlau und auch sonst gibts nicht so viel darüber.Welche Datei muss ich dafür einbinden und wie funktioniert dann das?
Oder habe ich was falsch verstenden.Bin dankbar für jeden Tip, Mondmann
-
http://www.boost.org/doc/html/string_algo/reference.html#id2553153
btw. falsches Forum.
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ok danke:-)Werds nächstesmal richtig posten.
Aber mein Aufruf der Funktion scheint ncoh falsch:
boost::algorithm::replace_all("_",zw_name,"-");Kriege 3 FEhlermeldungen, aber was ist daran falsch?
-
Hab gerade meine Glaskugel nicht dabei.
-
Mondmann schrieb:
ok danke:-)Werds nächstesmal richtig posten.
Aber mein Aufruf der Funktion scheint ncoh falsch:
boost::algorithm::replace_all("_",zw_name,"-");Kriege 3 FEhlermeldungen, aber was ist daran falsch?
Sollen wir jetzt raten?
Ich habe häufig auch 3 Fehlermeldungen, aber die Lösung ist sicher eine andere hier...Evtl. vertauschst du mal die Parameter in der Funktion.
-
Ich dachte es liegt rein am Aufruf der Funktion!
Also hier die Meldungen:
Fehler 3 error C2893: Funktionsvorlage 'InputT::iterator boost::algorithm::detail::erase(InputT &,InputT::iterator,InputT::iterator)' konnte nicht spezialisiert werden e:\source\boost\boost_1_33_1\boost\algorithm\string\detail\find_format_all.hpp 249
Fehler 4 error C2780: 'void boost::algorithm::detail::insert(InputT &,InputT::iterator,const InsertT &)': Erwartet 3 Argumente - 4 unterstützt e:\source\boost\boost_1_33_1\boost\algorithm\string\detail\find_format_all.hpp 254
Fehler 5 error C2893: Funktionsvorlage 'void boost::algorithm::detail::insert(InputT &,InputT::iterator,ForwardIteratorT,ForwardIteratorT)' konnte nicht spezialisiert werden e:\source\boost\boost_1_33_1\boost\algorithm\string\detail\find_format_all.hpp 254Parameters
Format A substitute string
Input An input string
Search A substring to be searched for
-
schau dir einfach nochmal die doc an, der funktionsaufruf ist nicht korrekt:http://www.boost.org/doc/html/replace_all.html
-
Ja das habe ich eben gemerkt. Und zwar hatte ich die Argumente falsch interpretiert.
Ich meinte "A substitute string" also "Eine Ersatzzeichenkette" ist das Zeichen das ersetzt werden soll. Und nicht der String in dem Zeichen ersetzt werden sollen.

vielen Dank für die Hilfe
Mondmann
-
Die STL bietet auch nen replace, brauchst du dich somit nicht mit boost rumzuschlagen ...
-
Auch einen der ALLE Zeichen ersetzt, nicht nur eins?
Klar kann ich ne Schleife machen,aber wozu wenns mit boost mit einem Befehl geht?Schönes Wochenende.
-
#include <iostream> #include <algorithm> #include <string> using namespace std; int main() { string text = "Ich#habe#ganz viele#Rauten.#"; replace(text.begin(),text.end(),'#',' '); cout << text <<endl; cin.get(); return 0; }
-
Danke, man kann nur dazulernen:-)
Mondmann