在我的工作中,我最终会编写包含静态常量字符串的代码,通常是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这是我想要保留的东西。
发布于 2015-05-12 23:58:23
你不需要宏来连接两个字符串。只需一个接一个地编写两个字符串文字。类似于:
"Sponge" "bob Squarepants!";是一样的。但是,如果您希望连接两个字符串文字的值,则必须使用strcat。
https://stackoverflow.com/questions/30195830
复制相似问题