将字符串转换为C++;? ,C++中通常如何将字符串转换为枚举。您使用的任何帮助函数都是这样做的好主意。

将字符串转换为C++;? ,C++中通常如何将字符串转换为枚举。您使用的任何帮助函数都是这样做的好主意。,c++,enums,C++,Enums,您可能需要使用std::map或hash_-map数据结构。我不久前回顾了此方法-可通过 插入 Begin_Enum_String( FORM ) { Enum_String( F_NONE ); Enum_String( F_BOX ); Enum_String( F_CUBE ); Enum_String( F_SPHERE ); } End_Enum_String; 如果枚举中的值不重复,则可以正常工作 代码示例 enum FORM f = ... con

您可能需要使用std::map或hash_-map数据结构。

我不久前回顾了此方法-可通过

插入

Begin_Enum_String( FORM )
{
    Enum_String( F_NONE );
    Enum_String( F_BOX );
    Enum_String( F_CUBE );
    Enum_String( F_SPHERE );
}
End_Enum_String;
如果枚举中的值不重复,则可以正常工作

代码示例

enum FORM f = ...
const std::string& str = EnumString< FORM >::From( f );
enum FORM f=。。。
const std::string&str=EnumString
::From(f);
反之亦然

assert( EnumString< FORM >::To( f, str ) );
断言(EnumString::To(f,str));
或boost/TR1无序映射(而不是非标准哈希映射),我应该指出,使用字符串作为枚举可能是一个糟糕的设计选择。
enum FORM f = ...
const std::string& str = EnumString< FORM >::From( f );
assert( EnumString< FORM >::To( f, str ) );