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() 方法,但是我将如何读取每个值中的一个并将其设置为例如 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 回答