我不太熟悉那個特定的方法,但看起來replace_all_copy
只想要一個替換字符串而不是is_any_of
的結果。
通過對string algorithms我注意到,有一個正則表達式版本,也將工作中的其他選項掃視:
#include <iostream>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/regex.hpp>
int main(int argc, char** argv) {
std::string someString = "abc.def-ghi";
std::cout << someString << std::endl;
std::string toReplace = "[.-]"; // character class that matches . and -
std::string replacement = " ";
std::string processedString =
boost::replace_all_regex_copy(someString, boost::regex(toReplace), replacement);
std::cout << processedString << std::endl;
return 0;
}
輸出:
abc.def-ghi
abc def ghi
這確實需要鏈接到的升壓正則表達式庫。就我而言,我建:
g++ -L/usr/local/Cellar/boost/1.52.0/lib -lboost_regex-mt main.cpp
我也在看,以及我不確定複製部分對於原始問題的重要性。基於文檔,它看起來像someString將被修改,並返回一個引用。如果複製不重要,我更喜歡你的解決方案,因爲你避免使用正則表達式。 –
@JesseVogt好點,我更新了答案。 – jrok
酷 - 不知道我完全錯過了看文檔中的replace_copy_if。好的解決方案 –