#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. Я не закрывал его, это сделал кто-то другой. Убедитесь, что вы прочитали все ответы на повторяющийся вопрос.