我正在阅读Koenig的Accelerated C ++。他写道:“新想法是,我们可以使用+来连接一个字符串和一个字符串文字-或两个字符串(但不能是两个字符串文字)。
很好,我想这很有道理。现在进行两个单独的练习来说明这一点。
以下定义是否有效?
const string hello = "Hello";
const string message = hello + ",world" + "!";
现在,我尝试执行以上操作,它成功了!所以我很高兴。
然后,我尝试进行下一个练习;
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
这没有用。现在,我知道这与不能连接两个字符串文字的事实有关,但是我不理解为什么我设法使第一个示例生效(不是“,world”和“!”之间的语义差异。 “两个字符串文字?这不应该行得通吗?)但是第二个不是。
"Hello" + ", world!"
在可以的时候写东西"Hello, world!"
。像往常一样,C ++为解决已知问题提供了一种很棒且简单的解决方法。:-)
"Hello" ", world!"
(没有+
)。人们可能会对C ++提出很多抱怨,但是我不认为这是其中之一。这与您编写1 / 3 + 1.5
并抱怨的原因完全相同,因为该除法是整数除法。无论好坏,这是大多数语言工作的方式。
"hello" " world" == "hello world"
如果您必须编写一个长字符串并且不希望它超出窗口范围,或者您希望处于某个行长限制范围内,则此功能很有用。或者,如果在宏中定义了字符串之一。
const string message = "Hello" ",world" + exclam
(例如,省略第一个+
)应该工作正常。