如何ToString()在c ++中的枚举? [英] How do i ToString() an enum in c++?

查看:625
本文介绍了如何ToString()在c ++中的枚举?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何ToString()在c ++中的枚举?在Java和C#中,我只调用ToString。

How do i ToString() an enum in c++? In Java and C# I would just call ToString.

enum Colours
{
    Red =0,
    Green=1,
    Blue=2
};

我需要创建一个字符串:Invalid color'+ color +'selected。

I need to create a string like: "Invalid colour '" + colour + "' selected."

推荐答案

虽然这通常是通过交换机完成的,但我更喜欢数组:

While this is commonly done through switches, I prefer arrays:

#include <iostream>

namespace foo {
  enum Colors { BLUE = 0, RED, GREEN, SIZE_OF_ENUM };
  static const char* ColorNames[] = { "blue", "red", "green" };

  // statically check that the size of ColorNames fits the number of Colors
  static_assert(sizeof(foo::ColorNames)/sizeof(char*) == foo::SIZE_OF_ENUM
    , "sizes dont match");
} // foo

int main()
{
  std::cout << foo::ColorNames[foo::BLUE] << std::endl;
  return 0;
}

显式数组大小有利于生成编译时间

The explicit array size has the benefit of generating a compile time error should the size of the enum change and you forget to add the appropriate string.

或者,Boost存储库中有Boost.Enum。库
尚未正式发布,但是相当稳定,并提供你想要的
。但我不会推荐给新手。

Alternatively, there is Boost.Enum in the Boost vault. The library hasn't been officially released but is quite stable and provides what you want. I wouldn't recommend it to a novice though.

这篇关于如何ToString()在c ++中的枚举?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆