Присвоение значения символа элементу вектора.C ++ - PullRequest
0 голосов
/ 14 мая 2019

Допустим, у вас есть 4 варианта

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

Каждый из вариантов является частью vector<string> pet;.

Мой вопрос: как мне присвоить буквенное значение, скажем, (a) значению Snake.Поэтому, когда пользователю предоставляется вышеуказанный вывод, он просто набирает a и нажимает ввод, чтобы выбрать все, что есть в этом выборе (в приведенном выше примере это будет Snake).Как бы вы вывели свои варианты, чтобы они выглядели так, как указано выше?

Ответы [ 3 ]

2 голосов
/ 14 мая 2019

Вы можете попробовать 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;
}

Выберите питомца:

(а) Змея

(б) Птица

(с) Рыба

(d) Черепаха

а

Вы выбрали Змею

1 голос

Вам не нужен std :: vector, потому что вы знаете размер массива. Вы можете просто инициализировать его с помощью строк:

    array<string, 4> arr = { "Snake", "Bird", "Fish", "Turtle" };
    char x;
    cin >> x;
    cout << arr[x - 'a'];

Если вам нужна неправильная проверка ввода, вы должны добавить оператор if перед cout.

if (x >= 'a' && x <= 'd')
0 голосов
/ 14 мая 2019

Сначала начните с определения вашего контейнера с домашними животными (меня беспокоит нехватка собак и кошек):

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];
    }
}

Это дает нам

Выберите своего питомца: Snake Bird Fish Turtle

Что близко.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, который является последним элементом в контейнере, и будет печатать

Вы выбрали Черепаху

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...