gpt4 book ai didi

c++ - 最快的报价转义实现?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:20 24 4
gpt4 key购买 nike

我正在编写一些规范化大量数据的代码。在处理结束时,许多 key="value"对被写入文件。

“值”部分可以是任何内容,因此在输出时,值必须将任何嵌入的引号转义为\"。

现在,我正在使用以下内容:

outstream << boost::regex_replace(src, rxquotesearch, quoterepl);
// (where rxquotesearch is boost::regex("\"") and quoterepl is "\\\\\"")

但是,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;
}

关于c++ - 最快的报价转义实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com