首页 >后端开发 >C++ >std::string 可以在 C 中的常量表达式中使用吗?

std::string 可以在 C 中的常量表达式中使用吗?

Linda Hamilton
Linda Hamilton原创
2024-11-23 16:43:22256浏览

Can std::string Be Used in a Constant Expression in C  ?

std::string 可以体现在常量表达式中吗?

在 C 11 中,在常量表达式中使用 std::string 构成挑战。然而,C 20 提供了一个解决方案,但需要注意的是,在常量求值结束之前必须破坏 std::string。

C 20 解决方案:

虽然您提供的代码片段将无法编译,以下代码将:

constexpr std::size_t n = std::string("hello, world").size();

C 17 替代方案:string_view

作为替代方案,C 17 引入了 string_view,一个轻量级的类似字符串的对象,用作对 char 对象序列的非拥有引用。与 std::string 不同,string_view 是不可变的,不需要销毁。这使得它非常适合在常量表达式中使用:

constexpr std::string_view sv = "hello, world";

以上是std::string 可以在 C 中的常量表达式中使用吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn