C ++无法在已经创建并从文本文件中读取的列表中打印整个列表

您好,我的程序遇到了麻烦,我创建了一个列表,并且有以下程序

C ++无法在已经创建并从文本文件中读取的列表中打印整个列表

它的目标是读取文本文件中的5个变量5个不同输入中的5个变量 所以我设法在while循环内正确显示该列表,因为每次读取一行时,它都会打印直到l .eof(文件末尾) 我的目标是我尝试在while循环的外部打印列表,该循环已经读取并打印了5个变量,是10倍,问题是它重复了列表中最后输入的5个变量 我重复10倍(列表的大小) 我还在here中找到的for循环中尝试过类似的操作:

int ID=it->ID;
string NAME=it->NAME;
int SEMESTER=it->SEMESTER;
string DIRECTION=it->DIRECTION;
double GRADE=it->GRADE;

好像那些是节点,但是我是一个同时拥有节点和列表的初学者,看来失败了

bluecapucino 回答:C ++无法在已经创建并从文本文件中读取的列表中打印整个列表

代码左列的问题是您没有取消引用迭代器。您永远不会在循环内设置a_students变量,那么为什么您希望它在每次迭代时都发生变化?

写类似:

a_students = *it;

在循环内。但是,有一种更简单的方法。代替手动处理迭代器,请使用:

for (auto a_students: s_stl_list)
{
    // do something with each "a_students" which will be AUTOmatically the right type
}
,

当我查看您提供的代码时,我发现在您的for循环中使用了a_student,但迭代器未/未使用它进行更新。基本上,您不会遍历创建的学生列表。

也许尝试使用std::for_eachcppreference)可以为您节省很多时间:) Godbolt示例:https://godbolt.org/z/fQUhcr

本文链接:https://www.f2er.com/3030460.html

大家都在问