使用输入字符串作为变量名
Use input string as variable name
如果输入是例如"香蕉",我想打印香蕉的kcal。我尝试过这样的东西(但失败了):
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;
我的班级,Food.h代码:
#pragma once
class CFood
{
public:
CFood();
~CFood();
float Kcal;
}
食品.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++是一种经过编译的语言,这意味着它在编译过程中(翻译成机器代码)会丢失代码中的名称信息。这意味着您不能在运行时使用代码中的任何信息(类名、变量名等),而不手动将其存储在某个位置。如果你想这样做,你就不走运了——你需要使用动态/解释语言,比如PHP或JavaScript。
如果你想在C++中做到这一点,你需要创建一个带有名称->值条目的哈希图,然后根据程序输入显示它的值(MrDuk在他的回答中提供了一个很好的例子)。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 将双精度值转换为 char 变量时字符串流如何工作
- 如何使替换 c 函数的变量名成为错误?
- 在C++中,我想通过使用来自变量(例如字符串)的typename信息,从模板中定义一个类对象
- 如何删除作为C++联合的成员变量的字符串对象
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 在 c++ 中使用递归时不使用变量反转字符串
- 如何将变量名设置为字符串?C++
- 如何在C++中使用字符串作为变量名
- 函数调用中的变量名到字符串,c++
- 将字符串转换为变量名或变量类型
- 如何将字符串变量名转换为变量的值
- 使用字符串作为变量名(C++)
- 使用输入字符串作为变量名