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

Time:06-30

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.

CodePudding user response:

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;

CodePudding user response:

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.

  •  Tags:  
  • c
  • Related