2

私がファイルを持っているとしましょう

ID  Name    Month   Actual Quantity     Desired Quantity    Cost 
2   pepsi             1                        1                3.3
3   pepsi             2                        3                5.3

vector<Item> itemsどうすればそれを;と呼ばれるベクトルに読み込むことができますか。ここで、Itemは、リストにリストされている名前で構成されるクラスです。それらすべてにset()メソッドがありますが、各値の1つを読み取り、たとえばsetID()とその値を設定し、空の場合は値-1を設定するにはどうすればよいですか。私がこれまでに持っているのは、開いている基本的なファイルだけです

char file_name[81];
  cout<<"Enter a file to open (ex: file.txt): ";
  cin.ignore();
  flush(stdin);
  cin.getline(file_name, 81);
  ifstream input(file_name);

istringstreamを使用する必要がありますか?

アップデート:

  char file_name[81];
  cout<<"Enter a file to open (ex: file.txt): ";
  cin.ignore();
  cin.getline(file_name, 81);
  ifstream input(file_name);
  string line;
  getline(input,line);
  while (getline(input,line)){

しかし、エラーが発生します:ステートメントは次の行でオーバーロードされた関数のアドレスを解決できません:ifstream input(file_name)

4

1 に答える 1

1

私がする方法は、適切な入力演算子を書き始めることです。

std::istream& operator>> (std::istream& in, Item& item) {
    ...
}

この演算子を配置すると、次のようなものを使用してファイルを読み取ることができます。

std::vector<Item> items;
input.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::copy(std::istream_iterator<Item>(input), std::istream_iterator<Item>(),
          std::back_inserter(items));
于 2012-11-12T01:05:28.350 に答える