将文件读入结构(c ++)

时间:2012-12-07 01:32:41

标签: c++ data-structures vector

我对C ++非常陌生,我想将一个文本文件读入一个结构中。文本文件在第一行有一个double,后面的行作为礼物名称(愿望)存在。我创建了一个结构,愿望清单,作为双重和愿望的载体存在。所以我做了以下事情:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

struct Gift
{
    double price;
    string name;
};

typedef vector<Gift> Giftstore;
typedef vector<string> Wishes;


int size(Giftstore& g) {return static_cast<int>(g.size());}

int size(Wishes& w) {return static_cast<int>(w.size());}


struct Wishlist
{
    double budget;
    Wishes wishes;
};


void reading_wishlist(ifstream& file, Wishlist& wish_list)
{
    if (file)
    {
        double money;

        file>>money;
        wish_list.budget<<money;
    }

    while(file)
    {
        string name;
        getline(file, name)
        wish_list.wishes.push_back(name);
    }

    file.close();
};


void print(Wishlist wish_list)
{
    cout<<"Budget: "<<wish_list.budget<<endl;
    cout<<"Wishes: "<<endl;

    for(int i=0; i<size(wish_list.wishes()); i++)
    {
        cout<<wish_list.wishes[i]<<endl;
    }
};

int main () {

  ifstream file;
  string filename;
  cout<<"Give a wishlist file: ";
  cin>>filename;

  file.open(filename)
  reading_wishlist(filename, wish_list);
  print(wish_list)

  return 0;
}

当然,在尝试构建和运行时,我再次赢得了一些错误奖品!第一个是:(参考:wish_list.budget&lt;

二元运算符类型'double'和'double'的操作数无效&lt;&lt;

这是什么意思?我是否必须重新定义运算符&lt;&lt; ?或者我可以将double读作Cstring,然后将其更改为double?

处理此问题的最佳方法是什么?更好:如何从文件中读取不同类型?因为我还必须将文件读入一个结构,礼品店,其中文本文件将包含每行的双重和礼品名称。

1 个答案:

答案 0 :(得分:5)

错误来自reading_wishlist函数

中的这一行

wish_list.budget<<money;

左边不能使用<<运算符(此处为WishList :: budget)。 你的意思是

wish_list.budget = money;