2

string addlashes ( string $str ) 返回一个在数据库查询等中需要引用的字符之前带有反斜杠的字符串。这些字符是单引号 (')、双引号 (")、反斜杠 () 和 NUL(NULL 字节)。

我正在研究这个 php 函数的 c++ 等价物。现在我的函数使用嵌套的替换调用,我将 \ 替换为 \\ 并将'替换为\'。它一点也不漂亮,而且速度也很慢。

使用标准 c++ 库和函数的最佳解决方案是什么?我的意思是绝对最快的方式。

4

1 回答 1

1
  1. 在单遍(for循环)和switch每个字符上遍历字符串。
  2. 当遇到需要转义的字符时,将反斜杠推入输出缓冲区
  3. 将当前字符推入输出缓冲区。

使用 astd::ostringstream作为输出缓冲区。

这是非常有效的(单程,缓冲输出)并且易于实现。为了使其更高效,直接使用 astd::string作为输出缓冲区,使用 追加字符push_back,并在循环前面reserve有足够大的容量(例如)。1.5 * input.length()

于 2011-07-30T14:02:14.810 回答