2017-01-23 4 views
0

Я работаю над проблемой, когда у меня есть два входных файла с названиями аэропортов. Каждый аэропорт имеет стандартизованную аббревиатуру, такую ​​как Сан-Франциско (SFO) и Лос-Анджелес (LAX)Соответствующие строки для их сокращений

Первый входной файл использует эти сокращения, а во втором файле используются названия городов.

Я ищу элегантное решение, а не используя std::string.compare() с 30 различными условиями if-else.

+3

использования [станд :: карта] (http://en.cppreference.com/w/cpp/container/map) –

ответ

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; 
} 
Смежные вопросы