3

私は C++ に非常に慣れていないので、テキスト ファイルを構造体に読み込もうとしています。テキストファイルは1行目がダブルで、それ以降の行がプレゼント名(願い事)として存在します。ウィッシュの double および vector として存在する構造体 Wishlist を作成しました。だから私は次のことをしました:

#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<

二項演算子への型 'double' および 'double' の無効なオペランド<<

これは何を意味するのでしょうか?演算子 << を再定義する必要がありますか? または、double を Cstring として読み取ってから double に変更できますか?

これに対処する最善の方法は何ですか?ベター: ファイルからさまざまなタイプを読み取る方法は? また、ファイルを Giftstore 構造体に読み込む必要があるため、テキスト ファイルは各行に double とギフト名で構成されます。

4

1 に答える 1

5

reading_wishlist関数のこの行からエラーが発生します

wish_list.budget<<money;

<<左側がdoubleの演算子は使用できません(ここではWishList ::budget)。
意味ですか

wish_list.budget = money;

于 2012-12-07T01:34:34.847 に答える