我试图从文本文件中获取几行来存储到类,Item和使用向量。但是,当我从文件读入程序时,没有任何内容存储。
这是我的主要内容:
#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
单独但它仍然不在矢量中。 main中没有输出,调试器表示size = 0.感谢任何帮助
编辑:这是文件格式
vitamins 1 15.99 1105 500 1000
shampoo 2 6.99 298 300 500
答案 0 :(得分:3)
你的问题是你阅读不好。 item_price
被声明为int
,但文件中的价格是浮点数。当您尝试阅读item_price
时,它会捕获.
之前的所有内容,然后停止阅读。在itemQuan
的下一个读取操作中,它获取.
并失败,因为.
不是有效的int
。由于读取失败,您永远不会进入while循环体,这意味着您永远不会创建任何对象。
将item_price
更改为float
,double
或std::string
以解决此问题。