M
toxor schrieb:
Jetzt bringt er zwar keinen Fehler mehr, aber er macht auch nichts mehr.
Das wäre jetzt aber eine andere Seite des Blattes, Dein Kernproblem wurde ja schon behoben.
Ich kann Dir schlecht weiterhelfen, wenn ich nicht weiß, was Du überhaupt machen möchtest. Ich gehe mal davon aus, dass Du alle "|" in der Datei mit "+" ersetzen möchtest.
Da wäre folgende Lösung besser, da Du mit Deiner Lösung jeweils nur das erste gefundene "|" ersetzt, alle nachfolgenden Zeichen in der Zeile werden nicht ersetzt:
std::string line("kkll||");
std::size_t prev_char(0);
for(std::size_t i(0); i<line.length(); ++i)
{
prev_char = line.find("|", prev_char);
if(prev_char != std::string::npos)
line.replace(prev_char, 1, "+");
}
Und um Dir die Denkarbeit zur späten Stund zu ersparen, bin ich mal so frei, und habe es Dir gleich in die Schleife gesetzt:
while(!altes_file.eof())
{
getline(altes_file,zeile);
neue_zeile = zeile;
size_t prev_char(0);
for(size_t i(0); i<neue_zeile.length(); ++i)
{
prev_char = neue_zeile.find("|", prev_char);
if(prev_char != string::npos)
neue_zeile.replace(prev_char, 1, "+");
}
cout << neue_zeile <<endl;
}
Wobei Dir hoffentlich klar ist, dass der Datei-Stream neues_file unbenutzt ist, und von daher auch nichts zu erwarten ist.