使用“<<”或“+”在使用“cout”时将字符串放在一起

时间:2013-01-17 22:58:29

标签: c++ console cout

我看到人们通过同时使用“<<”来输出不同的字符串和“+”。

cout << firstname << lastname << endl;

cout << firstname + lastname << endl;

使用“&lt;&lt;”是否更好?或者它没有太大的区别?

3 个答案:

答案 0 :(得分:19)

我想说在这种特殊情况下使用<<会更好。否则,连接会产生一个临时的,可以分配内存,这是没有充分理由的。

答案 1 :(得分:15)

当然,使用<< - 连接字符串将创建粘贴在一起的两个字符串的副本。它是否还在顶部分配额外的内存是在C ++库中如何实现字符串的问题,但如果名字和姓氏“足够长”(一起大于8-16个字符),那么它很可能会分配内存(然后在不再需要临时副本时再次释放它)。

相比之下,<<运算符的开销非常小,所以毫无疑问它会更好。

当然,除非你做了成千上万的这些事情,否则你不可能有可衡量的差异。但是不浪费CPU周期是好的,你永远不知道它们在其他地方有什么用处......;)

答案 2 :(得分:1)

级联<<是更好的选择。

对于性能,正如其他提到的那样,运算符<<不一定会引入任何临时对象。级联<<可以视为管道。

有时,如果您的左侧操作数不是用户定义的类型,则不能使用+,除非您提供相应的operator+。如,

cout << "Hello, " << lastname << endl;// Works
cout << "Hello, " + lastname << endl; // This won't work