将 php 函数添加到 c++ 的最快解决方案

发布于 2024-11-26 21:17:27 字数 326 浏览 2 评论 0原文

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

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

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

string addslashes ( string $str )
Returns a string with backslashes
before characters that need to be quoted in database queries etc.
These characters are single quote ('), double quote ("), backslash ()
and NUL (the NULL byte).

I'm working on a c++ equivalent of this php function. Right now my function uses nested replace calls, where I replace \ with \\ and ' with \'. It's not pretty at all and it's very slow too.

What is the best solution using only the standard c++ libs and functions? I mean the absolute fastest way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

破晓 2024-12-03 21:17:28
  1. 一次遍历字符串(for 循环)并在每个字符上switch
  2. 当遇到需要转义的字符时,将反斜杠推入输出缓冲区
  3. 将当前字符推入输出缓冲区。

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

这是非常高效的(单通道、缓冲输出)并且易于实现。为了提高效率,可以直接使用 std::string 作为输出缓冲区,使用 Push_back 追加字符,并保留足够的空间。循环前面的大容量(例如1.5 * input.length())。

  1. Go over the string in a single pass (for loop) and switch on each character.
  2. When encountering a character that needs escaping, push a backslash into the output buffer
  3. Push current character into the output buffer.

Use a std::ostringstream for the output buffer.

This is very efficient (single pass, buffered output) and straightforward to implement. To make it yet more efficient, directly use a std::string as the output buffer, append the characters using push_back, and reserve a sufficiently large capacity (e.g. 1.5 * input.length()) in front of the loop.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文