为什么cout用<<而不是+产生正确的字符串输出?

Mar*_*rge -5 c++

这没有显示输出:

int x = 10;
cout<<"Hello C++ " + x ;
Run Code Online (Sandbox Code Playgroud)

但这确实显示输出:

int x = 10;
cout<<"Hello C++ ";
cout<<x<<endl;
Run Code Online (Sandbox Code Playgroud)

问题是什么?他们看起来完全一样。

顺便说一句,我在Visual Studio 2010上使用Visual C ++ 6.0。

Lig*_*ica 5

因为那不是使用流或字符串的方法。

+操作是:

  1. 将两个数字相加,或
  2. 将两个std::strings 连接在一起。

在这里,您有一个字符串文字和一个数字。+操作员与此不兼容。

(实际上,您最终要做的是将“添加” 10到表示字符串文字的指针上;由于它的长度为十个字符,这使指针恰好位于字符串文字的NULL终止符所在的位置,所以就像试图打印""。)

正如您在第二个示例中发现的那样,正确的方法是再次使用流的<<运算符。

cout << "Hello C++ " << x;
Run Code Online (Sandbox Code Playgroud)