将Char值分配给向量元素。 C ++

时间:2019-05-13 22:25:23

标签: c++ vector

让我们说您有4个选择

(a) Snake
(b) Bird
(C) Fish
(D) Turtle

每个选项都是vector<string> pet;的一部分。

我的问题是,如何将(a)的字母值分配给Snake。因此,当向用户显示上述输出时,他们只需键入a并单击Enter即可选择该选项(在上面的示例中为Snake)。您将如何输出选择,使其看起来像上面的一样?

3 个答案:

答案 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