Unten ist der Code zum Suchen und Ersetzen einer Teilzeichenfolge aus einer Zeichenfolge. Ich bin jedoch nicht in der Lage, Argumente an die Funktion zu übergeben.Fehler in ungültiger Initialisierung der nichtkonstanten Referenz des Typs
Fehlermeldung:
invalid initialization of non-const reference of type ‘std::string& {aka std::basic_string&}’ from an rvalue of type ‘const char*’
bitte mit Erklärung helfen
#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;
}
Sie keine temporäre Bindung an eine nicht konstante Referenz kann passieren. Was soll es ändern? – chris
Das temporäre natürlich. Ich habe dieser Regel nie wirklich zugestimmt, aber ich habe einmal eine Antwort von Bjarne Stroustrup selbst erhalten, in der er sagte, dass er fühlte, Code zuzulassen, um solche Provisorien wie "zu verwirrend" zu modifizieren. – john