【发布时间】:2015-04-29 00:57:08
【问题描述】:
我想从用户指定的文件名中读取数据到对象向量中。我想读入的每个向量元素有五个不同的成员变量。在文件中,必须将多个条目(五个成员变量的组)读入每个向量元素。到目前为止,这是我的(不完整的)代码:
while (!inputFile.eof())
{
for (unsigned int count = 0; inputFile.eof(); count++)
{
cout << "Vehicle #" << (count + 1) << endl;
inputFile >> temp[count].setVIN();
cout << "VIN: " << temp[count].getVIN() << endl;
inputFile >> temp[count].setMake() << endl;
cout << "Make: " << temp[count].getMake() << endl;
inputFile >> temp[count].setModel() << endl;
cout << "Model: " << temp[count].getModel() << endl;
inputFile >> temp[count].setYear() << endl;
cout << "Year: " << temp[count].getYear() << endl;
inputFile >> temp[count].setPrice() << endl;
cout << "Price: " << temp[count].getPrice() << endl
<< endl;
}
}
但是,此代码已经存在几个问题。其中之一是setVIN()、setMake()、setModel()、setYear() 和setPrice 成员函数需要一个参数(用于设置 VIN、品牌、型号等的值)。这是类声明:
class Vehicle
{
private:
string VIN;
string make;
string model;
int year;
double price;
public:
Vehicle(string, string, string, int, double);
Vehicle();
string getVIN();
string getMake();
string getModel();
int getYear();
double getPrice();
void setVIN(string);
void setMake(string);
void setModel(string);
void setYear(int);
void setPrice(double);
};
最后,给定我发布的第一个代码块,在具有inputFile >> ..... 的行上,一条错误消息指出“没有操作数 '>>' 与这些操作数匹配,这些操作数类型是 std::ifstream >> void”
谁能帮我度过这个路障?
谢谢!
【问题讨论】:
-
另外,
inputFile >> temp[count].setVIN();应该如何工作?实际签名是void setVIN(string);,它需要std::string作为参数,然后返回void。这绝不是调用此函数的合适语法。 -
创建一个读取一个对象的函数,如果读取成功,则将该对象放入向量中。
-
粘贴输入文件的示例会有所帮助
标签: c++ file class object vector