我正在尝试从文本文件中获取几行以存储到类 Item 中,并使用 vector 。但是,当我从文件中读入程序时,没有存储任何内容。
这是我的主要内容:
#include <vector>
#include <fstream>
#include <iostream>
#include "Item.h"
using namespace std;
void readFile(vector<Item>&);
int main()
{
vector<Item> items;
readFile(items);
int size = items.size();
for (int index = 0; index < size; index++)
{
cout << items[index].getName() << endl;
}
}
这是有问题的功能:
void readFile(vector<Item>& vecItems, int lines)
{
ifstream inventory;
inventory.open("inventory.txt");
string itemName;
int itemDept, itemPrice, itemQuan, itemShort, itemSurplus;
string line;
if (inventory.fail())
{
cout << "ERROR NO FILE FOUND (inventory.txt)\n";
exit(1);
}
while (inventory >> itemName >> itemDept >> itemPrice >> itemQuan >> itemShort >> itemSurplus)
{
Item temp(itemName, itemDept, itemPrice, itemQuan, itemShort, itemSurplus);
vecItems.push_back(temp);
}
inventory.close();
}
我试过打电话
temp.setName(itemName)
etc etc
单独但它仍然不包含在 vector 中。 main 中没有输出,调试器显示 size = 0。感谢任何帮助
编辑:这是文件格式
vitamins 1 15.99 1105 500 1000
shampoo 2 6.99 298 300 500
最佳答案
你的问题是你读得不好。 item_price
声明为 int
,但文件中的价格是 float 。当您尝试读取 item_price
时,它会捕获 .
之前的所有内容,然后停止读取。在 itemQuan
的下一次读取操作中,它获取 .
并失败,因为 .
不是有效的 int
。由于读取失败,您永远不会进入 while 循环主体,这意味着您永远不会创建任何对象。
将 item_price
更改为 float
、double
或 std::string
以解决此问题。
关于c++ - 试图将文本文件中的数据存储到对象 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36796318/