недопустимые операнды для двоичного выражения (‘char’ и ‘const std::basic_string’)

#c

Вопрос:

У меня есть строка, содержащая символ`, и я хочу заменить ее экранированной формой того же символа.

 // Turns ` to ' 
std::replace(script.begin(), script.end(), std::string("\`"), std::string("\\`"));
 

Однако код не будет компилироваться,

 error: invalid operands to binary expression ('char' and 'const std::basic_string<char>')
        if (*__first == __old_value)
            ~~~~~~~~ ^  ~~~~~~~~~~~
note: in instantiation of function template specialization
      'std::replace<std::__wrap_iter<char *>, std::basic_string<char>>' requested here
            std::replace(script.begin(), script.end(), std::string("\`"), std::string("\\`"));
 

Комментарии:

1. std::replace заменяет один элемент последовательности одним элементом, а не произвольными подпоследовательностями. Вы, вероятно, хотите std::regex_replace.

2. @n.1.8e9-где-моя-доля. Это заменяет один элемент. Вы не прочитали мой вопрос и закрыли его. ВТФ!

3. @n.1.8e9-где-моя-доля. Я опубликовал этот вопрос, чтобы решить проблему с типами!!!

4. Я не закрывал его, это сделал кто-то другой. Убедитесь, что вы прочитали все ответы на повторяющийся вопрос.