0

文字列の double と vector を含む構造体を作成したいと考えています。私はこれを試しました

int main ()
{   
  struct List
  {
      double price;
      vector<string> items;
  };

  List list;

  ifstream infile ("Aap.txt");

  double p;
  infile>>p;
  list.price=p;
  cout<<list.price<<endl;

  int i=0;
  string name;
  getline(infile,name);

  while(infile)
  {
      list.items.push_back(name);
      cout<<list.items[i]<<endl;
      i++;
      getline(infile,name);
  }
  infile.close();

  if (!infile)
  {
      cout<<"File closed."<<endl;
  }

return 0;

これは、構造体の参照によるものではないため、ベクトルを埋めていませんか?

しかし、構造体でベクトルを次のように定義すると:

vector<string>& items;

次のようなエラーが表示されます。

エラー: 初期化されていない参照メンバーを含む構造体 `list'。

どうすればこれを修正できますか?

助けてくれてありがとう!

4

1 に答える 1

0

コードは完全に正常に機能します。

最初の読み取りには少し問題があります。価格値の後に入力ファイルに改行文字がある場合、その改行文字は未読のままになります。この状況では、への最初の呼び出しgetlineで空の文字列が読み取られます。つまり、items配列の名は空になります。

于 2012-12-11T01:18:31.677 に答える