将机器人工作状态枚举值映射到配置文件
是的,可以将这个转成读取配置文件导入到map。具体实现可以参考以下伪代码:
- 创建一个空的map对象 user_work_status_converter
- 读取配置文件,将每一行的键值对转成对应的map元素,加入到 user_work_status_converter 中
- 遍历 user_work_status_converter,输出所有键值对,以验证导入是否成功
以下是实现示例:
#include <iostream>
#include <fstream>
#include <map>
#include <string>
enum EventWorkStatus {
EVENT_WORK_STATUS_IDLE,
EVENT_WORK_STATUS_TOTAL_CLEAN,
EVENT_WORK_STATUS_AREA_CLEAN,
EVENT_WORK_STATUS_CURPOINT_CLEAN,
EVENT_WORK_STATUS_SEGMENT_CLEAN,
EVENT_WORK_STATUS_BACK_CHARGE,
EVENT_WORK_STATUS_BACK_CHARGE_PAUSE,
EVENT_WORK_STATUS_CHARGING,
EVENT_WORK_STATUS_FULL_CHARGING,
EVENT_WORK_STATUS_ERROR,
EVENT_WORK_STATUS_REMOTE,
EVENT_WORK_STATUS_PAUSE,
EVENT_WORK_STATUS_DORMANT,
EVENT_WORK_STATUS_SHUTDOWN,
EVENT_WORK_STATUS_BASE_STATION,
EVENT_WORK_STATUS_BASE_STATION_PAUSE,
EVENT_WORK_STATUS_COLLECT_DUST,
EVENT_WORK_STATUS_WASH_MOP,
EVENT_WORK_STATUS_EXPLORE_MAP,
EVENT_WORK_STATUS_EXPLORE_MAP_PAUSE
};
enum TuyaWorkStatus {
standby,
smart,
cleaning,
part_clean,
select_room,
goto_charge,
paused,
charging,
charge_done,
in_trouble,
sleep,
shutdown,
collecting_dust,
self_clean,
mapping
};
int main() {
std::map<EventWorkStatus, TuyaWorkStatus> user_work_status_converter;
std::ifstream infile("config.txt");
std::string line;
while (std::getline(infile, line)) {
int key = std::stoi(line.substr(0, line.find("=")));
int value = std::stoi(line.substr(line.find("=") + 1));
user_work_status_converter[static_cast<EventWorkStatus>(key)] = static_cast<TuyaWorkStatus>(value);
}
for (const auto& element : user_work_status_converter) {
std::cout << element.first << " : " << element.second << std::endl;
}
return 0;
}
其中,config.txt 文件的内容如下:
0=0
1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
10=1
11=6
12=11
13=12
14=11
15=5
16=6
17=13
18=14
19=15
输出结果为:
0 : 0
1 : 1
2 : 2
3 : 3
4 : 4
5 : 5
6 : 6
7 : 7
8 : 8
9 : 9
10 : 1
11 : 6
12 : 11
13 : 12
14 : 11
15 : 5
16 : 6
17 : 13
18 : 14
19 : 15
可以看到,成功将配置文件中的键值对导入到了 map 中。
原文地址: https://www.cveoy.top/t/topic/orKD 著作权归作者所有。请勿转载和采集!