gpt4 book ai didi

c++11 - C++11 中的枚举到字符串

转载 作者:行者123 更新时间:2023-12-03 06:30:40 26 4
gpt4 key购买 nike

我意识到这一点has been asked before不止一次,但我找不到明确寻找 C++11 这个问题的当前解决方案的问题,所以我们再来一次..

我们可以用C++11方便地获取枚举的字符串值吗?

即C++11 中(现在)是否有任何内置功能允许我们获取枚举类型的字符串表示形式,如

typedef enum {Linux, Apple, Windows} OS_type; 
OS_type myOS = Linux;

cout << myOS

这会在控制台上打印 Linux 吗?

最佳答案

C++(和 C)中长期且不必要地缺乏通用的枚举到字符串功能是一件痛苦的事情。 C++11 没有解决这个问题,据我所知 C++14 也不会解决这个问题。

我个人会使用代码生成来解决这个问题。 C 预处理器是一种方法——您可以在此处的评论中看到链接的一些其他答案。但实际上我更喜欢专门为枚举编写自己的代码生成。然后它可以轻松生成 to_string (char*) , from_string , ostream operator<< , istream operator<< , is_valid ,以及根据需要提供的更多方法。这种方法非常灵活和强大,但它在项目中的许多枚举之间强制执行绝对一致性,并且不会产生运行时成本。

使用 Python 优秀的“mako”包来完成此操作,如果您喜欢轻量级,则可以使用 Lua,如果您反对依赖项,则可以使用 CPP,或者使用 CMake 自己的用于生成代码的工具。有很多方法,但都归结为同一件事:您需要自己生成代码 - C++ 不会为您执行此操作(不幸的是)。

关于c++11 - C++11 中的枚举到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com