如果输入的是例如“banana”,我想打印出香蕉的千卡。我尝试过这样的事情(失败了):
string input;
cin >> input;
cout << input.Kcal << endl;
我知道我可以使用if语句来做到这一点:
string input;
cin >> input;
if(input == "banana")
{
cout << banana.Kcal << endl;
}
但是当我有1000多种食物时,我必须编写很多代码...
有我对香蕉对象的声明和定义。每个对象都有千卡。
food banana;
banana.Kcal = 89;
我的类(class),Food.h代码:
#pragma once
class CFood
{
public:
CFood();
~CFood();
float Kcal;
}
food.cpp代码:
CFood::CFood()
{
Kcal = 0;
}
CFood::~CFood()
{
}
最佳答案
将所有食物存储在std::map
或相关容器中,并通过string
密钥进行访问:
std::map<string, Food> Foods;
Foods.insert(std::make_pair("banana", Banana));
// later..
cin >> stuff;
cout << Foods.at(stuff).kcal << endl;
请记住,以上内容是伪的,您通常需要采取一些保护措施以防止您的项目崩溃(例如,检查
Foods.find(stuff) != Foods.end()
等)关于c++ - C++:使用输入字符串作为变量名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23117238/