Di seguito è riportato il codice per trovare e sostituire una stringa secondaria da una stringa.Ma non sono in grado di passare argomenti alla funzione.Errore nell'inizializzazione non valida del riferimento non costante di tipo
messaggio di errore:
invalid initialization of non-const reference of type ‘std::string& {aka std::basic_string&}’ from an rvalue of type ‘const char*’
prega di aiutare con spiegazione
#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;
}
Non è possibile associare un temporaneo per un riferimento non-const. Cosa dovrebbe cambiare? – chris
Il temporaneo, naturalmente. Non ho mai veramente accettato questa regola, ma una volta ho ricevuto una risposta dallo stesso Bjarne Stroustrup che diceva che sentiva di permettere al codice di modificare i provvisori come se fosse "troppo confuso". – john