Hey Leute es scheint ein Fehler mit meinem Code zu sein.C++ STL verkettete Liste
Mein Hauptproblem ist mit dem Abschnitt, wo ich alle Vorkommen von ‚p‘ durch eine ‚h‘ gefolgt ändern möchten. Bei meinen Tests ändert es sich aus irgendeinem Grund in ein "q", wenn ich möchte, dass es sich in "f" ändert.
Zur Vereinfachung des Verfahren mit dem Problem ist die Leere Änderung(), in den zweiten zur Schleife.
Kann mir bitte jemand helfen?
#include <iostream>
#include <list>
#include <ctype.h>
#include <fstream>
using namespace std;
void printList(const list<char> &myList);
void fillList(list<char> &myList);
void change(list <char> &myList);
void printList(const list<char> &myList)
{
list<char>::const_iterator itr;
for (itr = myList.begin(); itr != myList.end(); itr++) {
cout <<*itr;
}
cout << '\n' << endl;
}
void fillList(list<char> &myList)
{
ifstream file("test.txt");
string print;
while(file >> print){
for (int i = 0; i<print.length(); i++) {
myList.push_back(print[i]);
}
myList.push_back(' ');
}
}
void change(list <char> &myList)
{
list<char>::iterator itr;
//rules are as follows
for (itr = myList.begin(); itr != myList.end(); itr++) {
if (*itr == 'w'){
*itr = 'v';
}
}
for (itr = myList.begin(); itr != myList.end(); itr++) {
if((*itr == 'p' && ++*itr == 'h')){// rule incomplete ask!
*itr = 'f';
}
}
}
int main()
{
list<char> myList;
ifstream file("test.txt");
const string print;
fillList(myList);
printList(myList);
change(myList);
printList(myList);
return 0;
}
erstellen [MCVE], der folgendes beinhaltet nur * der Abschnitt, wo [Sie] alle Vorkommen von 'p' durch eine 'h' gefolgt ändern möchten * – user2079303
Sorry, i bemerkte, dass meine Erklärung ein bisschen dumm war, ich habe es aktualisiert, um besser zu reflektieren, was ich tun soll. – TheByteMonster
Ich wette '++ * itr' tut nicht, was du denkst, dass es ist. Und Sie sollten besser hoffen, dass Ihre Datei nicht mit "p" endet. – WhozCraig