gpt4 book ai didi

c++ - 定义复合静态字符串

转载 作者:行者123 更新时间:2023-11-28 06:16:29 26 4
gpt4 key购买 nike

在我的工作中,我最终编写了包含静态常量字符串的代码,通常是 sql 查询和/或绝对文件名等。在我正在编写的最新一段代码中,我有两个字符串,它们由共享字符串(日期)。像这样:

#include <iostream>

using std::cout;
using std::endl;

#define SPONGE "Sponge"
static const char SomeString[] = SPONGE "bob Squarepants!";
static const char SomeOtherString[] = "A dirty " SPONGE;

int main() {
cout << SomeString << endl;
return 0;
}

有没有一种方法可以在不使用 define 语句的情况下获得相同的结果?我想在一个位置定义通用字符串,这样如果我以后更改它,所有字符串都将使用更新后的值进行编译。

注意,两个字符串都在可执行文件的只读段中:

 elfdump ./a.out  | grep Some
[47] 0x00010d00 0x00000017 OBJT LOCL D 0 .rodata SomeString
[49] 0x00010d1c 0x0000000f OBJT LOCL D 0 .rodata SomeOtherString

这是我想保留的东西。

最佳答案

您不需要宏来连接两个字符串。简单地一个接一个地写两个字符串文字。像这样的东西:

"Sponge" "bob Squarepants!";

是一样的。但是,如果您想连接两个字符串文字的值,则必须使用 strcat

关于c++ - 定义复合静态字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30195830/

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