定义复合静态字符串
Defining composite static character strings
在我的工作中,我最终编写包含静态const字符字符串的代码,通常是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
。
相关文章:
- 返回从字符串文本创建的静态string_view是否安全?
- 无法使用 strcpy 将字符串复制到静态结构成员
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- public:静态常量字符串声明/初始化问题
- 如何在C++中对静态缓冲区执行字符串格式化?
- C++代码中奇怪的未使用的静态字符串声明
- 为什么在类体中无法启动静态常量字符串成员
- 为什么调用 cout.operator<<(const char*) 打印地址而不是字符串? 如何创建一个函数本地静态"HashSet<char>"并初始化它一次?
- 初始化有关Google C 样式指南的静态字符串(C-Type或STD :: String)
- 如何创建一个静态类来引用带有C++的字符串变量
- 使用 constexpr 初始化非常量静态字符串
- VS 静态字符串是否可写
- 有没有更好的方法可以从静态和非静态函数返回相同的字符串文本
- 用C 元编程构建静态字符串
- C 指针可以指向字符串文字的静态成员数组
- C++ 字符串常量和静态初始化顺序惨败
- 警告:ISO C++禁止将静态“constexpr char*”数据成员的字符串常量转换为“char*”
- 如何在 constexpr 函数内的字符串文字上静态断言条件
- 在静态地图上保存的字符串已被覆盖
- 无法初始化静态常量字符串