若每行的数据是一个有三个string类型和两个int类型以及一个bool类型的结构体 此时也需按行提取到该结构体的vector中,该如何提取,请用C++代码具体实现
时间: 2024-04-10 11:28:15 浏览: 72
下面是一个示例代码,演示如何将文件中的每行数据按照结构体格式提取到vector中:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
// 定义结构体
struct Data {
std::string str1;
std::string str2;
std::string str3;
int num1;
int num2;
bool flag;
};
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 >> data.num1 >> data.num2 >> std::boolalpha >> data.flag;
dataVector.push_back(data); // 将结构体对象保存在vector中
}
ifs.close(); // 关闭文件流对象
// 输出读取到的结构体数据
for (const auto& data : dataVector) {
std::cout << "str1: " << data.str1 << ", str2: " << data.str2 << ", str3: " << data.str3
<< ", num1: " << data.num1 << ", num2: " << data.num2 << ", flag: " << std::boolalpha << data.flag << std::endl;
}
return 0;
}
```
以上代码假设数据文件名为"data.txt",该文件与源代码文件位于同一目录下。每一行的数据被空格分隔,分别存储在结构体的成员变量中。你可以根据实际情况修改数据的分隔符和数据文件名。运行该代码后,将会按行提取并输出结构体数据。
阅读全文