当第一个在预处理器指令中定义而第二个在C++中是常量时,如何连接2个字符串?

bar*_*arp 1 c c++ string concatenation string-concatenation

这就是我所拥有的:

#define STRING "string 1"

string string2 = STRING + "string3";
Run Code Online (Sandbox Code Playgroud)

这是错的.解决办法是什么?问题string2必须是不变的还是其他什么,为什么?

Cyb*_*m0n 7

#define STRING "string 1"

std::string string2 = STRING "string3";
Run Code Online (Sandbox Code Playgroud)

相邻字符串litterals的连接不是预处理器的一个特性,它是C/C++的一个特性

  • 正确,但最好也提供解释,不是吗? (2认同)
  • `string =` 是 `string()` 构造函数的简写,它接受一个 `char*` 参数。`STRING "string3"` 是两个 `char*` 值的并列,在 C 和 C++ 中,这导致值被连接。 (2认同)