2016-04-22 19 views
0

テキストファイルからクラス、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 

を呼び出して試してみたが、それはまだで保持していませんベクトル。メインとデバッガで何も出力すべてのヘルプは

EDITを高く評価しているサイズ= 0と言う:これはあなたの問題は、あなたが悪いの読み取りを持っている

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

ファイルはどのようにフォーマットされていますか?あなたが悪い読み取り操作をしている可能性があります。 – NathanOliver

+0

私はOPにそれを追加しました、私はそれを忘れたと信じることができません – MLGSalad

答えて

3

ファイル形式です。 item_priceintと宣言されていますが、ファイル内の価格は浮動小数点数です。 item_priceで読み取ろうとすると、.まですべてをキャプチャして読み込みを停止します。 itemQuanの次の読み取り操作では、.が取得され、.は無効なintではないため、失敗します。読み込みが失敗するので、あなたは決してオブジェクトを作成しないことを意味するwhileループ本体に入ることはありません。

item_pricefloat,doubleまたはstd::stringに変更してください。

+0

私はそれを逃したのか分かりません。ありがとう、ネイト、あなたは最高です – MLGSalad

+0

@MLGSaladそれは通常、小さなものです。 – NathanOliver

関連する問題