将文件读入由类项组成的向量中

时间:2012-11-12 01:00:31

标签: c++

假设我有一个文件

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()方法为他们所有,但我如何读取每个值之一并设置它为例如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)

1 个答案:

答案 0 :(得分: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));