Hier ist mein Code für eine Sequenz in einem String zu finden und durch ein anderes ersetzt:Einzel Zitat Probleme mit C++ Suchen und Ersetzen-Funktion
std::string find_and_replace(string &source, string find, string replace)
{
size_t j;
for (; (j = source.find(find)) != string::npos ;)
{
source.replace(j, find.length(), replace);
}
return source;
}
Alles funktioniert gut, wenn ich etwas nennen wie:
find_and_replace(test, "foo", "bar")
Meine Anwendung erfordert, dass ich ein einzelnes Anführungszeichen durch zwei einfache Anführungszeichen, kein Anführungszeichen ersetzen. Zum Beispiel würde ich anrufen:
find_and_replace(test, "'", "''")
Aber immer wenn ich dies anrufe, friert die Funktion aus irgendeinem Grund ein. Weiß jemand, was die Ursache für dieses Problem sein könnte?
Edit: auf der Grundlage der Antworten, die ich bekommen habe, habe ich den Code festgelegt:
std::string find_and_replace(string &source, string find, string replace)
{
string::size_type pos = 0;
while ((pos = source.find(find, pos)) != string::npos) {
source.replace(pos, find.size(), replace);
pos += replace.size();
}
return source;
}
Ich hoffe, das hilft einige Leute das gleiche Problem.
Umm, irgendeinen Grund für den Downvote? Downvotes ohne Begründung sind nutzlos, weil sie dem Ersteller nicht sagen, wie sie ihre Fragen verbessern können. –