2016-04-22 65 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

相關問題