Poniżej znajduje się kod znajdowania i zamiany ciągu podrzędnego na ciąg znaków.Ale nie jestem w stanie przekazać argumentów do funkcji.Błąd niepoprawnej inicjacji niezawartej referencji typu
Komunikat o błędzie:
invalid initialization of non-const reference of type ‘std::string& {aka std::basic_string&}’ from an rvalue of type ‘const char*’
proszę o pomoc z wyjaśnieniem
#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;
}
Nie można powiązać tymczasowy do const odniesienia. Co ma się zmienić? – chris
Tymczasowy oczywiście. Nigdy tak naprawdę nie zgadzałem się z tą zasadą, ale raz dostałem odpowiedź od samego Bjarne Stroustrupa, który powiedział, że pozwolił kodowi modyfikować tymczasowe pliki, jak to było "zbyt zagmatwane". – john