首页 > 解决方案 > 如何使用 + 运算符连接字符串

问题描述

为什么一个被允许而另一个产生错误。谁能解释一下。

#include<string>
using namespace std;
int main()
{
    string s3 = "Why";
    string s11 = "hello" + " , " + s3;  // It gives error
    string s11 =  s3 + " , " +"hello" ; // This works fine.
}

标签: c++stringconcatenation

解决方案


由于运算符优先级,该行

string s11 = "hello" + " , " + s3;

被处理为

string s11 = ("hello" + " , " ) + s3;

子表达式"hello" + " , "不合法。第一项是类型char const [6](6 的数组char const),第二项是类型char const [4](4 的数组char const)。

+两者之间没有运营商。这就是为什么它是一个编译器错误。


第二行

string s11 =  s3 + " , " + "hello" 

被处理为

string s11 =  (s3 + " , ") + "hello" 

子表达式s3 + " , "是有效的,因为存在operator+支持该操作的 的重载。子表达式的计算结果为 a std::string。因此,后续+ "hello"也是支持的操作。


推荐阅读