简体   繁体   中英

How can I use a string read from `std::cin` to look up an existing variable by name?

I'm currently trying to make a sort of a shopping cart. When the program asks for items, i type them in; but it needs to remember the values so it can use them later in the code.

I have this code so far:

#include <iostream>

int main() {
    int item{};
    int apple = 5;
    std::cout << "what item do you want to buy?";
    std::cin >> item;
    std::cout << item;
    return 0;
}

Can I make it so that when i type apple as input, item actually gets the value 5 , from the variable named apple ? With this code, I get 0 as the result.

You could create a map with string keys and int values, store the necessary data in that map (instead of separate variables), and use the value read from std::cin as an index.

The code looks like:

std::map<std::string, int> fruits;
fruits["apple"] = 5;
std::string choice;
std::cin >> choice;
std::cout << fruits[choice] << std::endl;

You can use a map, as shown in the other answer. Another choice would be to show the user a numbered list:

1: apple - $10
2: banana - $15
3: ...

And then ask them to enter a number. Then use the number to access the element in the array of products. This might be a more robust interface for the user.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM