若每行的数据是一个有三个string类型的结构体 此时也需按行提取到该结构体的vector中,该如何提取,请用C++代码具体实现
时间: 2024-04-10 07:28:11 浏览: 82
下面是一个示例代码,演示如何将文件中的每行数据按照结构体格式提取到vector中:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
// 定义结构体
struct Data {
std::string str1;
std::string str2;
std::string str3;
};
int main() {
std::ifstream ifs("data.txt"); // 打开数据文件
if (!ifs) {
std::cerr << "Failed to open the file." << std::endl;
return 1;
}
std::vector<Data> dataVector; // 保存结构体的vector
std::string line;
while (std::getline(ifs, line)) { // 逐行读取数据
Data data; // 创建一个结构体对象
// 使用字符串流将一行数据按空格进行分割,并提取到结构体的成员变量中
std::stringstream ss(line);
ss >> data.str1 >> data.str2 >> data.str3;
dataVector.push_back(data); // 将结构体对象保存在vector中
}
ifs.close(); // 关闭文件流对象
// 输出读取到的结构体数据
for (const auto& data : dataVector) {
std::cout << "str1: " << data.str1 << ", str2: " << data.str2 << ", str3: " << data.str3 << std::endl;
}
return 0;
}
```
以上代码假设数据文件名为"data.txt",该文件与源代码文件位于同一目录下。每一行的数据被空格分隔,分别存储在结构体的成员变量中。你可以根据实际情况修改数据的分隔符和数据文件名。运行该代码后,将会按行提取并输出结构体数据。
阅读全文