C++:寻找一个简洁的解决方案来用特定字符替换std :: string中的一组字符

siv*_*udh 2 c++ string

假设我有以下内容:

std::string some_string = "2009-06-27 17:44:59.027";
Run Code Online (Sandbox Code Playgroud)

问题是:给代码替换some_string中所有" - "和":"的实例,并带有空格即""

我正在寻找一个简单的衬垫(如果可能的话)

可以使用Boost.

Pot*_*ter 6

replace_if( some_string.begin(), some_string.end(), boost::bind( ispunct<char>, _1, locale() ), ' ' );
Run Code Online (Sandbox Code Playgroud)

一行而不是n ^ 2运行时间或调用正则表达式引擎; v),虽然有点悲伤,你需要提升这个.


小智 5

Boost有一个字符串算法库,似乎在雷达下飞行:

字符串算法快速参考

有一个基于正则表达式的替换版本,类似于post 1,但我发现find_format_all更好的性能.这是一个单行启动:

find_format_all(some_string,token_finder(is_any_of("-:")),const_formatter(" "));
Run Code Online (Sandbox Code Playgroud)