G. *_*pen 5
以这种方式返回 string_view 是不安全的(或 UB),还是我可以良心继续这样做?
是的。你使用它的方式完全没问题。您的函数string_view
返回的toString
数据形成了一个数据视图,该视图将保持不变,直到程序终止。
或者,是否有更好(更快/更安全)的方法来解决这个枚举到字符串的一般问题?
您可以在其中创建一个constexpr
带有switch
-state 的函数,如下所示:
constexpr std::string_view toString(Color color)
{
switch (color) {
case Color::red: return "red";
case Color::green: return "green";
...
}
}
如果在编译时评估函数,效率应该没有差异。但是编译器可以检查您case
是否为所有可能的 s 添加了 -statements Color
,如果没有,它会发出警告。也不需要Color::last
这种方式。
保持 theenum
和std::array
orswitch
语句同步可能很烦人,尤其是当您有很多枚举值时。X 宏在这里可能会有所帮助。
更多推荐
函数,string
发布评论