让我们说您有4个选择
(a) Snake
(b) Bird
(C) Fish
(D) Turtle
每个选项都是vector<string> pet;
的一部分。
我的问题是,如何将(a)
的字母值分配给Snake
。因此,当向用户显示上述输出时,他们只需键入a
并单击Enter即可选择该选项(在上面的示例中为Snake
)。您将如何输出选择,使其看起来像上面的一样?
答案 0 :(得分:2)
您可以尝试使用std::map
在选择字母和动物字符串之间创建映射。这样可以更轻松地用键查询关联值,这是一个示例:
#include <iostream>
#include <map>
int main() {
// making a mapping between two strings, a letter and animal
std::map<std::string, std::string> pet = {{"a", "Snake"},
{"b", "Bird"},
{"c", "Fish"},
{"d", "Turtle"}};
// dialogue
std::cout << "Select a pet: " << std::endl;
std::cout << "(a) " << pet.at("a") << std::endl;
std::cout << "(b) " << pet.at("b") << std::endl;
std::cout << "(c) " << pet.at("c") << std::endl;
std::cout << "(d) " << pet.at("d") << std::endl;
// read input into a string variable
std::string choice;
std::cin >> choice;
// output selected letter mapping to animal
std::cout << "You selected a " << pet.at(choice) << std::endl;
return 0;
}
选择一只宠物:
(a)蛇
(b)鸟
(c)鱼
(d)乌龟
a
您选择了蛇
答案 1 :(得分:1)
您不需要std :: vector,因为您知道数组的大小。您可以使用字符串对其进行初始化:
array<string, 4> arr = { "Snake", "Bird", "Fish", "Turtle" };
char x;
cin >> x;
cout << arr[x - 'a'];
如果您需要进行错误的输入检查,则必须在cout之前添加一个if语句。
if (x >= 'a' && x <= 'd')
答案 2 :(得分:0)
首先定义您的宠物容器(我担心缺少猫和狗):
std::vector<std::string> pets = { "Snake", "Bird", "Fish", "Turtle" };
现在我们知道了可能的宠物,我们可以输出它们:
int main() {
std::vector<std::string> pets = { "Snake", "Bird", "Fish", "Turtle" };
std::cout << "Pick your pet:";
for (size_t i = 0; i < pets.size(); ++i) {
std::cout << " " << pets[i];
}
}
这给了我们
选择宠物:蛇鸟鱼龟
哪个靠近。 char
只是一个整数,我们可以在打印宠物时使用它:
for (size_t i = 0; i < pets.size(); ++i) {
std::cout << " (" << char('a' + i) << ") " << pets[i];
}
我们说print 'a' + i
是因为第一个元素是a
,第二个元素是b
。
现在您可以在引用容器时使用相同的逻辑(我在这里省略了任何erorr处理,但是您应该确保userChoice
是适当的值):
char userChoice;
std::cin >> userChoice;
std::cout << "You chose " << pets[userChoice-'a'];
现在,如果用户输入d
,我们将从中减去a
,这将为我们提供3(容器中的最后一个元素)并进行打印
您选择了Turtle