假设我有一个文件
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)
答案 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));