Приведите значения Enum к строке - PullRequest
0 голосов
/ 10 апреля 2020

Я знаю, что это простой вопрос. Но я хочу привести значение enum не к красному, синему, а к 0, 1, 2 и c к строке. Я хочу видеть 0, 1, 2 как строку. Я использую компилятор c ++ 14. Любой ответ будет хорошим.

#include <iostream>

int main()
{
    enum Color
    {
        red = 0,
        blue
    };

    Color color= Color::blue;

    std::string mystr = "I am super person my color enum value: ";
    mystr = mystr + color ;


    return 0;
}

Другие слова, которые мне нравится приводить 0, 1, 2, в качестве значений перечисления в строку. для объединения с другими строками

Ответы [ 3 ]

0 голосов
/ 10 апреля 2020

Для вашего enum в качестве спецификатора цвета и использования его атрибута в качестве имени вы должны использовать другую структуру данных, которая может хранить указанный номер цвета и его имя. Для решения этой проблемы вы можете использовать map для хранения номера цвета и его имени, как показано ниже, вы можете следовать этому URL, чтобы узнать больше об URL карты: https://en.cppreference.com/w/cpp/container/map/map

int main()
{
    enum Color
    {
        red = 0,
        blue
    };

    std::map<int, std::string> map;
    map[0] = "red";
    map[1] = "blue";
    map[2] = "orange";

    Color color = Color::blue;

    printf("%s\n", map[color].c_str());
    //or
    cout << map[color] << endl;

    return 0;
}
0 голосов
/ 10 апреля 2020

Я также использую функцию наподобие printf, так что std: cout может не быть здесь ответом. Спасибо за помощь. Я получил ответ от комментариев.

  #include <iostream>

int main()
{
    enum Color
    {
        red = 0,
        blue
    };

    Color color= Color::blue;

    std::string mystr = "I am super person my color enum value: ";
    mystr = mystr + std::to_string(static_cast<int>(color)) ;

    printf("%s", mystr);

    return 0;
}
0 голосов
/ 10 апреля 2020

Значение простого перечисления - просто int, поэтому, как указано в комментариях, это то же самое, что и создание std::string из int

#include <iostream>

int main()
{
    enum Color
    {
        red = 0,
        blue
    };

    Color color= Color::blue;

    std::string mystr = "I am super person my color enum value: ";
    mystr = mystr + std::to_string(color) ;

    std::cout << mystr;


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