我正在解决一个问题,我有两个带有机场名称的输入文件。每个机场都有标准化的缩写,如旧金山(SFO)和洛杉矶(LAX)
第一个输入文件使用这些缩写,第二个文件使用城市名称。
我正在寻找一种优雅的解决方案,而不是使用std::string.compare()
来处理30种不同的if-else条件。
答案 0 :(得分:5)
Map每个缩写为其全名
// Init map
std::map<std::string, std::string> airports;
airports["SFO"] = "San Francisco";
airports["LAX"] = "Los Angeles";
bool cmpAirports(std::string abbr, std::string fullname)
{
auto fname = airports.find(abbr);
if (fname == airports.end())
return 0; // No airport with such abbreviation found
return fname->second == fullname;
}