即时通讯尝试创建程序,它将与CSV文件中提供的数据一起使用。访问结构变量的名称
到目前为止,我已经制作了这个CSV文件的结构,并能够用它的数据填充向量。
我试图实现的是允许用户输入传感器名称并使用给定的传感器列表对其进行检查。
我想要做的是在用户输入传感器名称后,访问已创建的矢量数据并显示该特定传感器的数据。
这里是我所做的结构:
typedef struct SensorReadings {
int Month;
int Day;
double Dp; // Dew Point Temperature
double Dta; // Wind Direction (10min Avg)
double Dts; // Wind Direction (10min SD)
double EV; // Evaporation (Year to Date)
double QFE; // Barometric Pressure
double QFF; // Barometric Pressure (QFE*Kqff)
double QNH; // Barometric Pressure (Aviation Standard)
double RF; // Rainfall (Year to Date)
} SensorReadings;
这里是代码,在这里我提示用户输入传感器名称:
std::cout << std::endl << std::endl << "Available Sensors: " << std::endl;
std::cout << "Dp Dta Dts EV QFE QFF QNH RF" << std::endl << std::endl;
do {
std::cout << "Please select Sensor you want to work with: ";
std::cin >> selectedSensor;
isSensorValid = std::find(std::begin(availableSensors), std::end(availableSensors), selectedSensor) != std::end(availableSensors);
} while(!isSensorValid);
我也做了一个方法来获得平均全年数据每日价值:
double getAverageReadings(int wDay, int wMonth) {
std::vector<SensorReadings> pData = fm.parsedFile;
double DewPointTemperature = 0.0;
for(int r = 0; r < pData.size(); r++) {
if(pData[r].Month == wMonth) {
if(pData[r].Day == wDay) {
if(pData[r].Dp >= 100)
DewPointTemperature = DewPointTemperature + cWTKW(pData[r].Dp);
}
}
}
return DewPointTemperature;
}
此功能可以让我获得每天的日平均值n各自每月露点温度,我想要做的寿,什么是可以做这样的事情:
double getAverageReadings(int wDay, int wMonth, std::string selectedSensor) {
/*
Magic to convert std::string to actual Structure parameter
Pseudo:
param Sensor = convert(selectedSensor, to SensorReadingsParam);
*/
std::vector<SensorReadings> pData = fm.parsedFile;
double averageReadingsForSensor = 0.0;
for(int r = 0; r < pData.size(); r++) {
if(pData[r].Month == wMonth) {
if(pData[r].Day == wDay) {
if(pData[r].Sensor >= 100)
averageReadingsForSensor = averageReadingsForSensor + cWTKW(pData[r].Sensor);
}
}
}
return averageReadingsForSensor;
}
我从来没有使用之前,“动态”参数来工作,所以即时通讯寻求帮助这一个。
感谢您的关注,以及对此主题的任何帮助!
感谢您的快速回复。但是,内存使用有一个小问题。它从14Mb上升到173Mb,处理时间从现在的27秒变为未知(仍在运行)。这里有一个有趣的东西,解析是在8核CPU上进行的。也许我应该注意到,csv文件包含了500,000行,平均线长度为105-130个符号 –
是的,也许你应该提到这一点。这就是为什么我给了第二个选项,它不需要改变班级,以换取更多的工作来访问班级成员,按名称。加载此数据的代码的另一种可能性不是非常有效。 –
是的,现在尝试,我会将问题标记为完成脚本升级时的回答(希望它可以正常工作) –