首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义复合静态字符串

定义复合静态字符串
EN

Stack Overflow用户
提问于 2015-05-12 23:51:34
回答 1查看 63关注 0票数 0

在我的工作中,我最终会编写包含静态常量字符串的代码,通常是sql查询和/或绝对文件名等。在我正在编写的最新代码中,我有两个由共享字符串(日期)组成的字符串。如下所示:

代码语言:javascript
复制
#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语句就能达到同样的效果呢?我希望在一个位置定义公共字符串,这样如果我以后更改它,所有字符串都将使用更新后的值进行编译。

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

代码语言:javascript
复制
 elfdump ./a.out  | grep Some
      [47]  0x00010d00 0x00000017  OBJT LOCL  D    0 .rodata        SomeString
      [49]  0x00010d1c 0x0000000f  OBJT LOCL  D    0 .rodata        SomeOtherString

这是我想要保留的东西。

EN

回答 1

Stack Overflow用户

发布于 2015-05-12 23:58:23

你不需要宏来连接两个字符串。只需一个接一个地编写两个字符串文字。类似于:

代码语言:javascript
复制
"Sponge" "bob Squarepants!";

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30195830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档