这显示没有输出:
int x = 10;
cout<<"Hello C++ " + x ;
但这确实显示了输出:
int x = 10;
cout<<"Hello C++ ";
cout<<x<<endl;
有什么问题?它们看起来完全一样。
BTW我在Visual Studio 2010上使用Visual C ++ 6.0。
答案 0 :(得分:4)
因为那不是如何使用流或字符串。
+
运算符用于:
std::string
连接在一起。这里有一个字符串文字和一个数字。 +
运算符与这些运算符不兼容。
(你实际上最终要做的是“添加”10
到表示字符串文字的指针;因为它发生了,因为你的字符串是十个字符长,这使得指针正好在你的字符串文字的NULL终结符的位置是的,所以就像试图打印""
。)
正如您在第二个示例中找到的那样,正确的方法是再次使用流的<<
运算符。
cout << "Hello C++ " << x;
答案 1 :(得分:1)
尝试使用而不是:cout<<"Hello C++ " + x ;
cout<<"Hello C++ " << x ;
答案 2 :(得分:1)
How do you append an int to a string in 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
那么问题是什么,它们完全一样吗? 问题是流的“+”连接和NO,它们不一样! :)
答案 3 :(得分:0)
"Hello C++ " + x ;
毫无意义。你将10添加到字符串“Hello C ++”的地址,然后std :: cout应该输出地址为“Hello C ++”+ 10的输出。 所以这简直没有意义。 std :: cout是iostream的一部分。
答案 4 :(得分:-1)
int x = 10;
cout << "Hello world!" << ++x;
return 0;
如果要增加变量,则应使用++x
。如果要减少它,请使用--x
。
并且,如果您想要在另一个变量旁边显示变量,或者在另一个变量旁边显示变量,请在它们之间使用<<
。