尝试将文本文件中的数据存储到对象矢量

时间:2016-04-22 14:20:51

标签: c++ oop object vector

我试图从文本文件中获取几行来存储到类,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 

1 个答案:

答案 0 :(得分:3)

你的问题是你阅读不好。 item_price被声明为int,但文件中的价格是浮点数。当您尝试阅读item_price时,它会捕获.之前的所有内容,然后停止阅读。在itemQuan的下一个读取操作中,它获取.并失败,因为.不是有效的int。由于读取失败,您永远不会进入while循环体,这意味着您永远不会创建任何对象。

item_price更改为floatdoublestd::string以解决此问题。