gpt4 book ai didi

c++ - ifstream struct array 到 txt 文件然后将其作为数组提取出来是否可能?

转载 作者:行者123 更新时间:2023-11-28 07:15:34 27 4
gpt4 key购买 nike

我有一个类似这样的结构数组:

struct STUDENT{
int id;
string name;
char grade;
};

int main(){
STUDENT mydata[50];
for(int i = 0; i < 50; i++){
cin >> mydata[i].id;
cin >> mydata[i].name;
cin >> mydata[i].grade;
}
return 0;
}

如何将此数组放入 txt 中,使其不会丢失其格式,然后如何从 txt 文件中获取它并再次将其放入相同的结构数组变量中?

示例 txt 文件输出

1 john A
2 marry B
3 rachel C

最佳答案

对于文件输出:

for(int i = 0; i < 50; i++){
file << mydata[i].id << " ";
file << mydata[i].name << " ";
file << mydata[i].grade << std::endl;
}

阅读方面:

int i = 0;
while( i < 50 && file >> mydata[i].id >> mydata[i].name >> mydata[i].grade )
i++;

编辑:

关于错误检查,一种简单的方法是您可以检查i 的最终值。如果小于50,则表示没有读取完整数据,中间发生了一些错误。

要获得更稳健的方法,您可以查看此链接以了解异常处理。 http://www.cplusplus.com/reference/ios/ios/exceptions/

关于 for 和 while 循环,它们中的任何一个都可以使用。然而,在这种情况下,while 循环似乎更自然且“可​​读”。 for 选项看起来像:

for ( int i = 0; i < 50 && file >> mydata[i].id >> mydata[i].name >> mydata[i].grade; i++) 
{
}

使用 for 循环的一个非常微妙但重要的优点是循环变量 i 对外部程序不可见。这可能很重要,因为在 while 循环的情况下它可能会造成干扰。

关于c++ - ifstream struct array 到 txt 文件然后将其作为数组提取出来是否可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20280874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com