嘿家伙似乎有我的代码错误。C++ STL链表
我的主要问题是我想要改变任何'p'出现的部分,然后是'h'。在我的测试中,出于某种原因,当我想将其更改为'f'时,它会将其更改为'q'。
为方便起见,问题的方法是void change(),在第二个for循环中。
有人可以帮忙吗?
#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;
}
创建[MCVE]仅包括*其中[你]想改变随后是 'H' * 'P' 的任何发生部 – user2079303
对不起,我注意到我的解释有点愚蠢,我已经更新了它以更好地反映我希望它做的事情。 – TheByteMonster
我打赌'++ * itr'没有做你认为的事情。而且你最好还是希望你的文件不能以'p'结尾。 – WhozCraig