c++将文件中的数据存到结构体数组中
作者:野牛程序员:2023-05-18 21:06:55 C++阅读 2874
将文件中的数据存储到结构体数组中时,可以按照以下步骤进行操作:
1、定义结构体:首先,你需要定义一个与文件数据格式相匹配的结构体。例如,如果文件中的数据是包含姓名和年龄的记录,你可以这样定义结构体:
struct Person { std::string name; int age; };
2、打开文件:使用 C++ 的文件流来打开文件,并确保成功打开了文件。例如,可以使用 std::ifstream
类来打开一个输入文件流:
std::ifstream file("data.txt"); if (!file.is_open()) { // 处理文件打开失败的情况 return; }
3、读取文件数据:使用文件流对象从文件中逐行读取数据,并将其存储到结构体数组中。可以使用 std::getline
函数读取每行数据,并使用字符串流 std::stringstream
对象解析每行数据。
std::vector<Person> people; // 结构体数组 std::string line; while (std::getline(file, line)) { std::stringstream ss(line); std::string name; int age; if (ss >> name >> age) { Person person; person.name = name; person.age = age; people.push_back(person); } }
4、关闭文件:读取完文件数据后,记得关闭文件流。
file.close();
完整的代码示例:
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <vector> struct Person { std::string name; int age; }; int main() { std::ifstream file("data.txt"); if (!file.is_open()) { std::cout << "Failed to open file." << std::endl; return 0; } std::vector<Person> people; std::string line; while (std::getline(file, line)) { std::stringstream ss(line); std::string name; int age; if (ss >> name >> age) { Person person; person.name = name; person.age = age; people.push_back(person); } } file.close(); // 输出结构体数组中的数据 for (const auto& person : people) { std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl; } return 0; }
以上代码将从名为 "data.txt" 的文件中读取每行的姓名和年龄数据,并将其存储在 Person
结构体的数组中。然后,通过循环遍历结构体数组,可以输出每个人的姓名和年龄。记得将代码中的 "data.txt" 替换为你实际使用的文件名。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:c++文件的读取和写入
- 下一篇:c++从文件中读取数据到数组