我在一个编程项目上遇到了一些麻烦。我想从 .txt 文档中获取信息,并将信息存储在类对象数组中。对于 .txt 文档的每一行,我想要创建一个新的类对象。
如果有的话
“10 Mark 9/24/1988 客户经理
9 珍妮 8/6/1983 运输助理"
在.txt中,第一行将存储在uArray[0]的第一个对象的变量中,第二行将存储在uArray[1]的变量中。
我创建了一个包含五个变量的“用户”类。
int iD;
string name, birth, sSN, dept, position;
这就是我所拥有的,我知道它还有很长的路要走,但我做不到。
{
ifstream myFile;
users uArray[100];
myFile.open("users.txt")
while(!myFile.eof())
{
myFile >> uArray.users.iD >> uArray.users.name >> uArray.users.sSN ...(ect);
}
}
我应该创建一个函数来调用来对信息进行排序,还是有更简单的方法?我被卡住了...抱歉初学者的问题...
最佳答案
您可以重载 operator>>
以使其更容易一些。这是运算符重载背后的实际目的。您提供自定义行为,并且在使用流时它是完全透明的。在你的类中声明一个friend
函数
friend std::ifstream& operator>>(std::ifstream&, users& user);
并实现
std::ifstream& operator>>(std::ifstream& stream, users& user){
stream >> user.iD >> user.name >> user.sSN ...(ect)
return stream;
}
然后您可以使用 for 循环并像上面那样做。但是您必须使用数组索引来寻址数组中的单个元素
int i = 0;
while(!myFile.eof())
{
myFile >> uArray[i].users.iD >> uArray[i].users.name >>
uArray[i].users.sSN ...(ect);
i++;
}
参见 here获取教程。
关于C++ Ifstream 转换为类对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985452/