C++中拼接字符串常量

C++中拼接字符串常量

有时候,字符串很长,无法放到一行中。C++允许拼接字符串字面值,即将两个用引号括起的字符串合并为一个。事实上,任何两个由空白(空格、制表符和换行符)分隔的字符串常量都将自动拼接成一个。因此,下面所有的输出语句都是等效的:

cout << "I'd give my right arm to be" " a great violinist.\n";
cout << "I'd give my right arm to be a great violinist.\n";
cout << "I'd give my right ar"
"m to be a great violinist.\n";

注意,拼接时不会在被连接的字符串之间添加空格,第二个字符串的第一个字符将紧跟在第一个字符串的最后一个字符(不考虑\0)后面。第一个字符串中的\0字符将被第二个字符串的第一个字符取代。

C++可以把多个字符串常量拼接到一起,这样可以防止代码过长,两个字符串常量之间若是空格、换行符隔开,C++在编译时都会编译成一个字符串来处理,代码如下:

printf("test a... " "test b..." "test c...\n");
printf("test a... " \
       "test b... " \
       "test c... \n");

char pcTest1[256] = "test a..." "test b..." "test c...";
char pcTest2[256] = "test a... "\
                    "test b..."\
                    "test c...\n";
printf("input: %s", pcTest1);
printf("input: %s", pcTest2);

上述代码中在输出时都会输出到一行里。
我在宏定义时会利用到C++的字符串拼接特性,如在输出log信息时会用到,示例代码:

#define LOG_FORMAT "debug %s-%s-%d"
#define LOG_INFO __TIME__, __FUNC__, __LINE__
#define LOG(input, ...) printf(LOG_FORMAT input, LOG_INFO, ##__VA_ARGS__)

调用代码示例:

int val = 1;
LOG("log test\n");
LOG("log test, val=%d\n", val);

输出:

debug-15:00:12-main-200: log test
debug-15:00:12-main-201: log test, val=1

对C++感兴趣的朋友点这里:C/C++课程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值