2015-01-22 4 views
0

Я работаю над калькулятором стехиометрии на C++. Я сохранил свойства каждого элемента в структурах данных. Каждая структура данных называется после символа элемента. Я хочу, чтобы пользователь мог вводить символ элемента и выводить/использовать значения в структуре. Пример:Как связать структуру со строковым ключом?

User input: He 
Program Output: Helium 1 1.00794 

Как это сделать?

+2

структуры хранения данных в станд :: карте <станд :: строка, your_structure> с символом в качестве ключа. При вводе пользователя используйте std :: map :: find(), чтобы найти символ на карте и распечатать данные в найденной структуре данных. –

+0

@LahiruChandima Хотите написать ответ? – Barry

+0

Напишу ответ –

ответ

2

Хранить структуры данных в std :: map с символом в качестве ключа. На входе пользователя, используйте зЬй :: Карта :: найти(), чтобы найти символ в картографических данных и печати в найденной структуры данных

#include <iostream> 
#include <map> 


struct element 
{ 
    std::string symbol; 
    std::string name; 
    double stoichiometry; 
}; 

int main() 
{ 
    element hydrogen; 
    hydrogen.symbol = "H"; 
    hydrogen.name = "Hydrogen"; 
    hydrogen.stoichiometry = 2; 

    element helium; 
    helium.symbol = "He"; 
    helium.name = "Helium"; 
    helium.stoichiometry = 1.5; 

    std::map<std::string, element> elements; 
    elements[hydrogen.symbol] = hydrogen; 
    elements[helium.symbol] = helium; 

    std::string symbol; 
    std::cout << "Enter element symbol: "; 
    std::cin >> symbol; 

    std::map<std::string, element>::iterator it(elements.find(symbol)); 
    if (it != elements.end()) 
    { 
     std::cout << it->second.name << " " << it->second.stoichiometry << std::endl; 
    } 
    else 
    { 
     std::cout << "Symbol " << symbol << " not found"; 
    } 

    return 0; 
}