c++将文件中的数据存到结构体数组中
作者:野牛程序员:2023-05-18 21:06:55 C++阅读 3303
将文件中的数据存储到结构体数组中时,可以按照以下步骤进行操作:
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++从文件中读取数据到数组
