C++中文件数据导入结构体
时间: 2024-09-10 15:30:48 浏览: 117
多文件结构-东南大学C++何洁月
在C++中,如果想要从文件导入数据并将其填充到结构体中,你可以使用`std::ifstream`(输入流)来读取文件内容,然后按照结构体的字段顺序解析。这里有一个基本的例子,展示如何导入CSV格式的文件到`Student`结构体:
```cpp
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
// 结构体 Student
struct Student {
std::string name;
int age;
double score;
};
void importFromCSV(const std::string& filename, std::vector<Student>& students) {
std::ifstream inputFile(filename);
if (!inputFile) {
std::cerr << "Failed to open the file." << std::endl;
return;
}
std::string line;
while (std::getline(inputFile, line)) { // 逐行读取
std::istringstream iss(line); // 创建一个流来处理每一行
Student tempStudent;
if (!(iss >> tempStudent.name >> tempStudent.age >> tempStudent.score)) { // 解析一行并检查是否成功
std::cerr << "Invalid data format in line: " << line << std::endl;
continue;
}
students.push_back(tempStudent); // 将有效数据添加到学生列表
}
inputFile.close();
}
int main() {
std::vector<Student> students;
importFromCSV("students.csv", students);
for (const auto& student : students) {
std::cout << "Name: " << student.name << ", Age: " << student.age << ", Score: " << student.score << std::endl;
}
return 0;
}
```
在这个示例里,`importFromCSV`函数打开名为"students.csv"的文件,逐行读取,然后使用`std::istringstream`解析每行数据,将其转换成`Student`结构体实例并加入到`students`向量中。
阅读全文