我看到人们通过同时使用“<<”来输出不同的字符串和“+”。
cout << firstname << lastname << endl;
与
cout << firstname + lastname << endl;
使用“&lt;&lt;”是否更好?或者它没有太大的区别?
答案 0 :(得分:19)
我想说在这种特殊情况下使用<<
会更好。否则,连接会产生一个临时的,可以分配内存,这是没有充分理由的。
答案 1 :(得分:15)
当然,使用<<
- 连接字符串将创建粘贴在一起的两个字符串的副本。它是否还在顶部分配额外的内存是在C ++库中如何实现字符串的问题,但如果名字和姓氏“足够长”(一起大于8-16个字符),那么它很可能会分配内存(然后在不再需要临时副本时再次释放它)。
相比之下,<<
运算符的开销非常小,所以毫无疑问它会更好。
当然,除非你做了成千上万的这些事情,否则你不可能有可衡量的差异。但是不浪费CPU周期是好的,你永远不知道它们在其他地方有什么用处......;)
答案 2 :(得分:1)
级联<<
是更好的选择。
对于性能,正如其他提到的那样,运算符<<
不一定会引入任何临时对象。级联<<
可以视为管道。
有时,如果您的左侧操作数不是用户定义的类型,则不能使用+
,除非您提供相应的operator+
。如,
cout << "Hello, " << lastname << endl;// Works
cout << "Hello, " + lastname << endl; // This won't work