gpt4 book ai didi

c++ - 从文件中读取数据并将其存储到 vector 中

转载 作者:行者123 更新时间:2023-11-30 02:41:18 26 4
gpt4 key购买 nike

我正在尝试从文件中读取项目列表,然后将它们存储到 vector 中。问题是我的代码将最后一项添加到 vector 中两次,我不确定为什么即使程序已经结束它仍然继续读取文件。

这是文本文件中的内容。当我显示 vector 的内容时,“橘子”行出现了两次。

苹果-磅-10 2

橘子-磅-5 6

代码如下//读取列表内容到文件

while (!inputFile.fail())
{

//Extract the line from the list
getline(inputFile,item_name,'-');
getline(inputFile,item_unit,'-');
inputFile >> item_amount;
inputFile >> item_price;

//Create an instance of the item object
Item New_Item(item_name, item_unit, item_amount,item_price);

//Push it to the list vector
list.push_back(New_Item);
}

//Close the file
inputFile.close();

最佳答案

这是 while (!infile.fail()) 反模式的典型症状。

我会为该类型定义一个结构并重载 operator>>:

struct item { 
std::string name;
std::string unit;
int amount;
int price;
};

std::istream &std::operator>>(std::istream &is, item &i) {
getline(is, i.name, '-');
getline(is, i.unit, '-');
is >> i.amount;
return is >> i.price;
}

有了这些定义,读取数据边界变得微不足道:

std::ifstream inputFile("fileNameHere");

std::vector<New_Item> items { std::istream_iterator<Item>(inputFile),
std::istream_iterator<Item>() };

[我将它从 list 更改为 vector,因为,嗯,你真的不需要 list。您可以将其改回,但可能不应该。]

关于c++ - 从文件中读取数据并将其存储到 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com