I have seen people output different strings together by using both "<<" and "+".
cout << firstname << lastname << endl;
versus:
cout << firstname + lastname << endl;
Is it better to use "<<" or does it not make much of a difference?
I have seen people output different strings together by using both "<<" and "+".
cout << firstname << lastname << endl;
versus:
cout << firstname + lastname << endl;
Is it better to use "<<" or does it not make much of a difference?
Definitely, use <<
- concatenating the string will create a copy of the two strings pasted together. Whether it also allocates extra memory on top is a matter of how strings are implemented in the C++ library, but if the first and last names are "long enough" (bigger than 8-16 characters together), then it most likely WILL allocate memory (and then free it again when the temporary copy is no longer needed).
The <<
operator will have very little overhead in comparison, so no doubt it is better.
Of course, unless you do thousands of these things, it's unlikely that you will have a measurable difference. But it's good to not waste CPU cycles, you never know what good use they can be somewhere else... ;)
I would say its better to use <<
in that particular case. Otherwise, concatenation results in a temporary which could allocate memory for no good reason.
Definitely, use <<
- concatenating the string will create a copy of the two strings pasted together. Whether it also allocates extra memory on top is a matter of how strings are implemented in the C++ library, but if the first and last names are "long enough" (bigger than 8-16 characters together), then it most likely WILL allocate memory (and then free it again when the temporary copy is no longer needed).
The <<
operator will have very little overhead in comparison, so no doubt it is better.
Of course, unless you do thousands of these things, it's unlikely that you will have a measurable difference. But it's good to not waste CPU cycles, you never know what good use they can be somewhere else... ;)
Cascading <<
is a better choice.
For performance, as the other theads mentioned, operator <<
doesn't necessarily introduce any temporary object. A cascading <<
can be considered as a pipe.
Also sometimes, you cannot use +
if your left-hand operand is not a user-defined type, unless you provide the corresponding operator+
. E.g.,
cout << "Hello, " << lastname << endl;// Works
cout << "Hello, " + lastname << endl; // This won't work
std::string
. –
Undershorts © 2022 - 2024 — McMap. All rights reserved.
std::string
foroperator+
concatenation? This won't work with rawconst char *
s. – Unseal