Wie verwenden von boost::is_any_of mit boost::replace_all_copy
Ich versuche, ein einfaches Stück code arbeiten mit boost::is_any_of
und boost::replace_all_copy
. Das snippet unter:
std::string someString = "abc.def-ghi";
std::string toReplace = ".-";
std::string processedString = boost::replace_all_copy(someString, boost::is_any_of(toReplace), " ");
Allerdings bekomme ich einen Compilerfehler, der ist zu lang, um hier einfügen. Könnte jemand, der Erfahrung mit diesen 2 Funktionen bitte darauf, meine Fehler?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht allzu vertraut mit dieser speziellen Methode, aber es scheint, dass
replace_all_copy
will nur einen Ersatz-string, sondern das Ergebnis deris_any_of
.Blick durch die anderen Optionen für string algorithmen ich bemerkte, dass es ein regex-version, die auch funktionieren würde:
Ausgabe:
Dies erfordert die Verknüpfung gegen die boost-regex-lib. In meinem Fall habe ich das mit:
g++ -L/usr/local/Cellar/boost/1.52.0/lib -lboost_regex-mt main.cpp
Ich glaube nicht, dass Sie es nicht können. Die drei-parameter-version von
boost::replace_all_copy
nimmt den input-string Ersatz-string und den string zu suchen. Wasboost::is_any_of
gibt ein Prädikat functor.Was Sie wahrscheinlich wollen, ist
boost::replace_if
:Dadurch ändert sich das original, also, wenn Sie brauchen, um es zu halten, die Sie verwenden können,
boost::replace_copy_if
:Hoffe, das hilft.
replace_copy_if
in der Dokumentation. Schöne Lösung.