Vs c++ 读txt解析每行数据,每行数据用" ",解析保存在结构体数组中
时间: 2024-09-14 09:10:33 浏览: 39
C++结构体数组详细解析
在C++中,你可以使用`fstream`库来读取文本文件(txt文件),然后利用`getline()`函数逐行获取数据。如果每行数据由空格分隔,可以创建一个结构体数组,并使用`std::istringstream`对每行进行分割。这里是一个简单的示例:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
// 假设我们有一个结构体,用于存储每一行的数据
struct DataItem {
std::string name;
int value;
};
// 定义结构体数组
std::vector<DataItem> dataArray;
void parseFile(const std::string& filename) {
std::ifstream inputFile(filename);
if (!inputFile.is_open()) {
std::cerr << "Failed to open file: " << filename << std::endl;
return;
}
std::string line;
while (std::getline(inputFile, line)) {
std::istringstream iss(line);
DataItem item;
// 使用空格作为分隔符
std::getline(iss, item.name, ' ');
iss >> item.value; // 假设value总是整数
// 检查是否成功解析数据
if (iss.fail() || iss.peek() != EOF) {
std::cerr << "Invalid input format on line: " << line << std::endl;
} else {
dataArray.push_back(item); // 将解析后的数据添加到数组
}
}
inputFile.close();
}
int main() {
parseFile("example.txt");
for (const auto& item : dataArray) {
std::cout << "Name: " << item.name << ", Value: " << item.value << std::endl;
}
//
阅读全文