为什么 cout 使用 << 生成正确的字符串输出,而不是使用 +?
Why does cout produce the correct string output with <<, but not with +?
这没有输出:
int x = 10;
cout<<"Hello C++ " + x ;
但这确实显示了输出:
int x = 10;
cout<<"Hello C++ ";
cout<<x<<endl;
有什么问题?他们看起来完全一样。
顺便说一句,我在Visual Studio 2010上使用Visual C 6.0。
,因为那不是如何使用流或字符串。
+
操作员是:
- 一起添加两个数字或
- 将两个
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
。
,如果要在另一个字符串旁边显示一个变量,请在它们之间使用<<
。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 呼叫运营商<<临时
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 过载输出<<用于类的运算符,以打印其中的元组
- 重载运算符<<输出地址而不是数据成员
- 什么会导致死亡<<变量& lt; & lt;“ t";当输出超过终端宽度时,打印空白而不是值
- Can运算符<<用于设计我们自己的输出显示方式