21xrx.com
2025-01-12 20:28:50 Sunday
文章检索 我的文章 写文章
C++实现读取文件信息并放入结构体数组
2023-07-05 11:36:28 深夜i     14     0
C++ 文件读取 结构体数组

在软件开发中,读取文件并将文件内容放入结构体数组中是常见的操作之一。而C++语言既是常见的编程语言,也是实现该操作的优秀工具之一。

首先,我们需要定义一个结构体,该结构体可以包含文件中所有需要存储的信息。以一个批量存储学生信息的例子为说明,以下是一个简单的学生信息结构体:

struct Student
  string name;
  int age;
  string major;
  double gpa;
;

接下来,我们需要打开文件并读取其中的信息。假设文件中每一行包含一个学生的信息,格式为“姓名 年龄 专业 GPA”,则我们可以使用C++中的ifstream库来实现对文件的读取。

#include <iostream>
#include <fstream>
using namespace std;
int main() {
  Student students[100]; // 每次最多读取100个学生信息
  int i = 0;       // 学生信息数组下标
  string line;      // 文件中的一行信息
  ifstream input_file("students.txt"); // 打开文件
  // 判断文件是否成功打开
  if (!input_file.is_open())
    cout << "无法打开文件!" << endl;
    return 1;
  
  // 从文件中逐行读取学生信息,并存储到结构体数组中
  while (getline(input_file, line)) {
    stringstream ss(line);   // 将字符串转换为输入流
    ss >> students[i].name;   // 读取姓名
    ss >> students[i].age;   // 读取年龄
    ss >> students[i].major;  // 读取专业
    ss >> students[i].gpa;   // 读取GPA
    i++;
  }
  // 输出学生信息,测试读取是否成功
  for (int j = 0; j < i; j++) {
    cout << students[j].name << ", ";
    cout << students[j].age << ", ";
    cout << students[j].major << ", ";
    cout << students[j].gpa << endl;
  }
  // 关闭文件
  input_file.close();
  return 0;
}

在上述代码中,我们首先定义了一个结构体数组,并设置了一个下标变量i,用于存储每个学生信息结构体在数组中的位置。接着,我们使用ifstream库中的open()函数打开文件。如果文件打开失败,则输出错误信息并退出程序。如果文件打开成功,则使用getline函数逐行读取文件中的内容,并将读取的信息存储到结构体数组中,直到文件被全部读取完毕。最后,我们输出读取到的学生信息,并使用ifstream库中的close()函数关闭文件。

这些都是C++中读取文件并将内容存储到结构体数组中的基础步骤和代码示例。当然,实际应用中还需要考虑更多细节,如文件路径、文件读取方式、读取异常处理等。不过大体思路和操作,与上述代码类似。

  
  

评论区