当前位置:首页 C++ > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击