用c++建立一个名为cros的结构体,包含CD,OD,WT,MA,SO,ST 其中CD作为编号,然后读text文件找出cros开头的行,把行内数据读入结构体直到出现重复的CD号,可能有多个cros行,然后继续读文件输出下面cros中CD所代表的数据结构项的OD
时间: 2024-04-08 08:28:34 浏览: 136
以下是使用C++编写的示例代码,实现了上述要求:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
// 定义名为cros的结构体
struct cros {
int CD;
std::string OD;
double WT;
std::string MA;
std::string SO;
std::string ST;
};
int main() {
// 读取text文件
std::ifstream inputFile("data.txt");
if (!inputFile) {
std::cout << "无法打开文件!" << std::endl;
return 1;
}
std::vector<cros> crosList; // 存储cros结构体的列表
std::string line;
while (std::getline(inputFile, line)) {
if (line.find("cros") == 0) { // 查找以"cros"开头的行
cros newCros;
// 解析行内数据到结构体
sscanf(line.c_str(), "cros %d %lf %s %s %s %s", &newCros.CD, &newCros.WT, &newCros.OD[0], &newCros.MA[0], &newCros.SO[0], &newCros.ST[0]);
crosList.push_back(newCros); // 将结构体添加到列表中
}
}
// 输出cros中CD所代表的数据结构项的OD
for (const auto& c : crosList) {
std::cout << "CD: " << c.CD << ", OD: " << c.OD << std::endl;
}
inputFile.close();
return 0;
}
```
请将文件名为"data.txt"的文本文件放在与代码文件相同的目录下,并根据实际需求修改结构体的数据类型和文件解析的方式。
阅读全文