Ниже приведен код для поиска и замены подстроки из строки. Но я не могу передать аргументы функции.Ошибка при недействительной инициализации неконстантной ссылки типа
Сообщение об ошибке:
invalid initialization of non-const reference of type ‘std::string& {aka std::basic_string&}’ from an rvalue of type ‘const char*’
, пожалуйста, помогите с объяснением
#include <iostream>
#include <string>
using namespace std;
void replaceAll(string &s, const string &search, const string &replace) {
for(size_t pos = 0; ; pos += replace.length()) {
pos = s.find(search, pos);
if(pos == string::npos) break;
s.erase(pos, search.length());
s.insert(pos, replace);
}
}
int main() {
replaceAll("hellounny","n","k");
return 0;
}
Вы не можете связать с временным неконстантной ссылкой. Что это должно измениться? – chris
Временное, конечно. Я никогда не соглашался с этим правилом, но однажды получил ответ от самого Бьярна Страустрапа, который сказал, что он решил разрешить коду изменять временные ситуации, как это было «слишком запутанно». – john