Joe*_*Joe 5 c++ string replace escaping
我正在研究一些规范化大量数据的代码.在处理结束时,将许多key ="value"对写出到文件中.
"值"部分可以是任何东西,因此在输出点,值必须具有任何嵌入式引号转义为\".
现在,我正在使用以下内容:
outstream << boost::regex_replace(src, rxquotesearch, quoterepl);
// (where rxquotesearch is boost::regex("\"") and quoterepl is "\\\\\"")
Run Code Online (Sandbox Code Playgroud)
但是,gprof显示我将大部分执行时间花在这个方法上,因为我必须为每一行的每个值调用它.
我很好奇是否有比这更快的方法.我不能使用std :: replace,因为我用两个替换一个字符.
谢谢你的建议.
如果速度是一个问题,你应该使用手写功能来做到这一点.请注意reserve(),尝试将内存(重新)分配保持在最低限度.
string escape_quotes(const string &before)
{
string after;
after.reserve(before.length() + 4);
for (string::size_type i = 0; i < before.length(); ++i) {
switch (before[i]) {
case '"':
case '\\':
after += '\\';
// Fall through.
default:
after += before[i];
}
}
return after;
}
Run Code Online (Sandbox Code Playgroud)