while (!fin.eof())
{
fin.getline(read, 49); subcnt++;
i_sequence = subcnt;
i_name = my_tok(read, "/");
i_price = atoi(my_tok(NULL, "/"));
i_quantity = atoi(my_tok(NULL, "/"));
if (subcnt <= 10)
loadlist[subcnt-1].setList(i_sequence, i_name, i_price, i_quantity);
}
my_tok
是我使用的函数,而不是strtok
。
loadlist
类包含有关项目的信息。
我希望这个加载函数从“ItemList.txt”文件中逐行读取信息,并将写入的信息保存到类中。
第一个循环是按照我的意愿实现的,但是当涉及下一个循环并调用fin.getline(read,49)
时,所有先前保存的信息都会被初始化。
我不知道为什么在调用fin.getline
时信息会不断变化。
感谢您的帮助。
答案 0 :(得分:0)
尝试更改打开文件的代码并将循环中的行读取为以下内容:
#include <fstream>
#include <iostream>
#include <string>
int main (int argc, char* argv[])
{
std::string line;
std::ifstream fin("ItemList.txt");
if (fin)
{
while (std::getline(fin, line))
{
// add code here to process each line
}
fin.close();
}
return 0;
}
答案 1 :(得分:0)
my_tok
i_name
函数返回指向缓冲区的指针,对吗?并且您已将该指针保存在feof
。
好吧,既然您已将指针保存到缓冲区中,当您更改缓冲区中的内容时,您可以更改指针指向的值。您需要复制要保存的值并使用指向副本的指针。
此外,正如其他人所指出的那样,您使用{{1}}是不正确的。它无法预测未来。