gpt4 book ai didi

c++ - 在没有定义的情况下在一行中连接 C 字符串

转载 作者:行者123 更新时间:2023-11-30 05:39:46 25 4
gpt4 key购买 nike

是否有一种 C++ 方法可以在编译时连接两个 constexpr C 字符串?我知道如何在 C 中使用定义来实现它,但我真的更愿意使用 C++ 的范围缩减和显式类型系统。我的主要目标是找到一种在编译时将字符串串联成一行的好方法。

这是一个以我不希望的方式工作的示例:

#define STR1 "foo"
#define STR2 "blah"
#define CONCATED STR1 STR2

这是一个无法按照我想要的方式工作的示例:

constexpr const char *str1 = "foo";
constexpr const char *str2 = "blah";
constexpr const char *concated = str1 str2;

最佳答案

它只能在编译时用字符串文字完成。

 constexpr const char concatenated[] = "foo" "blah";

这是通过您的 CONCATED 宏实现的效果(事实上,它实际上是预处理器如何扩展该宏的用法)。

如果你想连接命名变量,那么就不可能满足你在编译时进行连接避免使用堆或堆栈的要求。

两个明显的选择是分配足够的内存来保存结果然后使用 strcat(),或者使用 std::string 类型。这两者都涉及使用堆或堆栈(取决于您如何分配内存,以及您为 std::string 选择的分配器如何工作)并且都在运行时进行连接。

关于c++ - 在没有定义的情况下在一行中连接 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130713/

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