我有一个包含'个字符的字符串。我想用\'替换所有它们,因为这是用于插入数据库的。有人可以建议我这样做的有效方法吗?不幸的是,我不能使用boost并且仅限于STL。

最佳答案

不要忘记在源字符串中出现\时也将其转义。

std::string escape(std::string const &s)
{
    std::size_t n = s.length();
    std::string escaped;
    escaped.reserve(n * 2);        // pessimistic preallocation

    for (std::size_t i = 0; i < n; ++i) {
        if (s[i] == '\\' || s[i] == '\'')
            escaped += '\\';
        escaped += s[i];
    }
    return escaped;
}

09-27 21:25