C++ Ifstream 转换为类对象数组

标签 c++ arrays class ifstream

我在一个编程项目上遇到了一些麻烦。我想从 .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/

相关文章:

Javascript 使用 json 中的值编写循环并将其嵌套数据作为 json 对象传递给循环

c++ - 如何将模板派生类的方法提取到非模板基类中

C++:打印列表

c++ - 指针转换/转换解决方案 将 C 升级到 C++

java - 为什么 Boolean 包装类实现 Serialized 接口(interface)和 Comparable 接口(interface)?它有什么用呢?

java - 如何定义具有静态值的内部类并使其可以访问外部类对象

Python 类基础

c++ - 至少内部名称的前 31 或 63 个字符是有意义的?

arrays - 使用VBA过滤掉数组中的空单元格

arrays - 数组到字典(无循环)