将txt读入数组

时间:2017-12-08 14:19:55

标签: c++ arrays

所以我有一个像这样格式的txt文件

  

名称

     

高度升

     

高度升

     

高度升

     

高度升

     

高度升

     

我有两个名为kennlinie和pumpe

的结构
struct kennlinie {

        int liter;
        int hoehe;

    };

    struct pumpe {

        char name[20];
        kennlinie pkt[5];
        float preis;

    };

我还有一个变量pumpe pump[9]

pump[i].name应包含名称,pump[i].pkt[j].hoehe高度,pump[i].pkt[j].liter升和pump[i].prize价格。

将数据从txt导入数组的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

最好的方法,恕我直言,是让他们的成员阅读课程。这些类知道成员类型和数量。研究"数据隐藏"和"封装"。

这是通过重载operator>>来实现的。

class Height_Liters
{
  public:
    friend std::istream& operator>>(std::istream& input, Height_Liters& hl);
  private:
    unsigned int height;
    unsigned int liters;
};
std::istream& operator>>(std::istream& input, Height_Liters& hl)
{
   input >> hl.height;
   input >> hl.liters;
};

现在你可以做这样的事情来阅读Height Liters行:

Height_Liters hl;
std::vector<Height_Liters> database;
//...
  my_data_file >> hl;
  database.push_back(hl);
//...

但是,由于没有迹象显示有多少行,您可能希望以不同方式阅读:

std::string name;
unsigned int height;
unsigned int liters;
unsigned int prize;
std::getline(my_data_file, name); // read first row
while (my_data_file >> height)
{
  prize = height; // Just in case
  if (my_data_file >> liters)
  {
    Height_Liters hl(height, liters);
    database.push_back(hl);
  }
}