所以我在这里有这部分代码
这是循环5次(MAX = 5)以将单词插入链接列表。
for ( int i = 0 ; i < MAX ; i++ )
{
string alphabet = G->returnAlphabets();
L[i]->addWords(alphabet[i]);
}
我在这里有插入词部分
string line;
fstream myfile ("Words.txt");
while (!myfile.eof())
{
getline(myfile,line);
if ( alphabet == line[0] )
{
ListNode *newNode = new ListNode;
if ( head == NULL )
{
newNode->item = alphabet;
newNode->next = NULL;
head = newNode;
}
else
{
newNode->item = line;
prev = cur;
prev->next = newNode;
}
cur = newNode;
}
}
myfile.close();
我的问题是它在最后一个循环中给出了错误。意味着MAX = 4,插入节点。循环的其余部分很好。当我将MAX减小到4意味着它循环4次时,程序没有错误,但是当程序循环5次时会出错。
任何人都可以指出我的错误吗?
编辑:
我在最后一次循环中检测到它没有进入第一个节点 此外,程序从文件中获取单词,只是在输入第一个节点时出现错误
答案 0 :(得分:1)
使用while (!myfile.eof())
的逻辑很糟糕,因为您没有检查getline(myfile, line);
是否成功,然后在getline()
检测到EOF时继续使用该值。你应该使用:
while (getline(myfile, line))
{
...rest of loop...
}
我不清楚(对我而言)没有仔细检查手册或标准line
失败后getline()
的状态,但很容易导致line[0]
失败。< / p>
由于您说“它在最后一次迭代中失败”,这可能是您遇到麻烦的主要原因。