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

Why does cout produce the correct string output with <<, but not with +?

本文关键字:lt 输出 使用 cout 为什么 字符串      更新时间:2023-10-16

这没有输出:

int x = 10;
cout<<"Hello C++ " + x ;

但这确实显示了输出:

int x = 10;
cout<<"Hello C++ ";
cout<<x<<endl;

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

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

,因为那不是如何使用流或字符串。

+操作员是:

  1. 一起添加两个数字或
  2. 将两个 std::string s连接在一起。

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

(您实际上最终要做的是将10添加到代表字符串字面的指针中;当发生时,因为您的字符串是十个字符长,将指针完全留在了您的字符串字面的null null终端位置,因此就像试图打印""。)

正如您通过第二个示例找到的那样,正确的方法是再次使用流的<<操作员。

cout << "Hello C++ " << x;
    "Hello C++ " + x ;

没有道理。您可以将10添加到字符串" Hello C "的地址,然后STD :: COUT应该对此进行输出。地址" Hello C " 10。因此,这根本没有意义。std :: cout是iostream的一部分。

您如何将int附加到C 中的字符串?

我建议您仔细查看上述帖子以解决您的问题。

在C或C 中,使用字符串流最好地完成串联。但是要特别回答您的问题:

此C 代码显示没有输出:

int x = 10;
cout<<"Hello C++ " + x ; //uses "+" as you are trying to concatenate an "int" to some output to the stream

,但是显示出输出的一个:

int x = 10;
cout<<"Hello C++ "; //output directly to stream
cout<<x<<endl; //same here, no concatenation

那是什么问题,它们是完全一样的吗?问题在于" "串联到流,不,它们不一样!:)

尝试使用:cout<<"Hello C++ " + x ;

cout<<"Hello C++ " << x ;
int x = 10;
cout << "Hello world!" << ++x;
return 0; 

如果要增加变量,则应使用++x。如果要减少它,请使用--x

,如果要在另一个字符串旁边显示一个变量,请在它们之间使用<<