21xrx.com
2024-11-05 20:40:21 Tuesday
登录
文章检索 我的文章 写文章
C++实现读取文件信息并放入结构体数组
2023-07-05 11:36:28 深夜i     --     --
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++中读取文件并将内容存储到结构体数组中的基础步骤和代码示例。当然,实际应用中还需要考虑更多细节,如文件路径、文件读取方式、读取异常处理等。不过大体思路和操作,与上述代码类似。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复