c++ - 试图将文本文件中的数据存储到对象 vector 中

标签 c++ oop object vector

我正在尝试从文本文件中获取几行以存储到类 Item 中,并使用 vector 。但是,当我从文件中读入程序时,没有存储任何内容。

这是我的主要内容:

#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

单独但它仍然不包含在 vector 中。 main 中没有输出,调试器显示 size = 0。感谢任何帮助

编辑:这是文件格式

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

最佳答案

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

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

关于c++ - 试图将文本文件中的数据存储到对象 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36796318/

相关文章:

c++ - 为什么在调用recv系统调用时会调用sigprocmask?

C++ lambda 捕获 this vs 通过引用捕获

c++ - 独立代码生成不支持函数 'uigetfile'

JavaScript 选择类似数组的对象?

c++ - 使用模板将语义从一种类型转移到另一种类型

java - 为什么构造函数在java中不被继承?

java - 如何确保在所有子类中都使用一个变量?

Java 类/继承结构

android:如何在对象中保存图像

javascript - 从数组中的所有对象中删除键