gpt4 book ai didi

c++ - 如何声明 constexpr C 字符串?

转载 作者:IT老高 更新时间:2023-10-28 21:37:25 32 4
gpt4 key购买 nike

我想我很了解如何将关键字 constexpr 用于简单的变量类型,但是当涉及到指向值的指针时我感到困惑。

我想声明一个 constexpr C 字符串文字,其行为类似于

#define my_str "hello"

这意味着编译器将 C 字符串文字插入到我输入此符号的每个位置,并且我将能够在编译时使用 sizeof 获取它的长度。

constexpr char * const my_str = "hello";

const char * constexpr my_str = "hello";

constexpr char my_str [] = "hello";

还是有所不同?

最佳答案

Is it constexpr char * const my_str = "hello";

不,因为字符串文字不能转换为 指向 char 的指针。 (它曾经在 C++11 之前,但即使在那时,这种转换也被弃用了)。

or const char * constexpr my_str = "hello";

没有。 constexpr 不能去那里。

这将是良好的格式:

constexpr const char * my_str = "hello";

但它不能满足这一点:

So that i will be able to get its length at compile-time with sizeof, etc.


or constexpr char my_str [] = "hello";

这个格式很好,你确实可以在编译时用 sizeof 得到长度。请注意,此大小是数组的大小,而不是字符串的长度,即大小包括空终止符。

关于c++ - 如何声明 constexpr C 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46100310/

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