2016-04-22 66 views
0

我想从一个文本文件中的几行存储到一个类,项目的载体,并采用向量。但是,当我从文件读入程序时,什么也不存储。试图从文本文件数据存储到对象

这里是我的主:

#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 

的个体,但它仍然没有持有矢量。没有在主输出和调试器说大小= 0任何帮助表示赞赏

编辑:这是文件格式

vitamins 1 15.99 1105 500 1000 
shampoo 2 6.99 298 300 500 
+2

文件是如何格式化的?这可能是因为你的阅读操作不好。 – NathanOliver

+0

我把它加入到OP中,不敢相信我忘了 – MLGSalad

回答

3

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

item_price更改为float,doublestd::string以解决此问题。

+0

我不知道我是如何错过的。谢谢你Nate,你是最棒的 – MLGSalad

+0

@MLGSalad它通常是小事情。 – NathanOliver

相关问题