如果输入的是例如“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/

10-12 04:18