我正在阅读 Koenig 的《Accelerated C++》。他写道,“新的想法是,我们可以使用+来连接字符串和字符串字面值——或者说,两个字符串(但不能是两个字符串字面值)。”
好的,我想这很有道理。现在我们来看两个旨在阐明这一点的练习。
以下定义是否有效?
const string hello = "Hello";
const string message = hello + ",world" + "!";
现在,我尝试执行上面的内容,并且它成功了!所以我很高兴。
然后我尝试做下一个练习;
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
这个没有起作用。现在我明白了,这似乎与不能连接两个字符串文本有关,但我不理解为什么我设法使第一个示例起作用(",world"和"!"不是两个字符串文本吗?这不应该起作用吗?),但第二个示例却无法起作用。
const string message = "Hello" ",world" + exclam
(例如省略第一个+
)应该可以正常工作。 翻译:上述代码可以正常运行,将会得到字符串 "Hello, world!",其中的变量 exclam 代表感叹号。 - n0rd"Hello" + ", world!"
,当你可以直接写"Hello, world!"
。像往常一样,C++ 对于看似的问题有一个很棒且简单的解决方法。 :-) - Bo Persson"Hello" ", world!"
(没有+
)。对于C++,我们可以提出很多抱怨,但我不认为它的处理方式是其中之一。这与您编写1/3 + 1.5
并抱怨因为除法是整数除法是完全相同的。无论好坏,这是大多数语言的工作方式。 - James Kanze"hello" " world" == "hello world"
非常有用,如果您需要编写一个长字符串并且不想让它超出窗口或者想要保持一定的行长度限制,那么就可以使用它。或者如果其中一个字符串是在宏中定义的。 - Dimitar Slavchev