I've often heard it said that if you're not using std::string for strings in C++, you're (arguably) not using C++
Here's the code (Visual Studio 2010):
#include <string>
#include <time.h>
char buf[64], buf2[64];
clock_t start = clock();
for(i = 0; i < 100000; i++)
{ _snprintf(buf, sizeof(buf), "%d", i);
_snprintf(buf2, sizeof(buf2), "%d", i * i);
#if defined FAST
strcat(buf, buf2);
#else
std::string s1 = buf;
std::string s2 = buf2;
std::string s3 = s1 + s2;
#endif
}
_snprintf(buf, sizeof(buf), "%.4f\n", (float)(clock() - start) / (float)CLK_TCK);
OutputDebugString(buf);C++ is all about low-cost abstractions. Any speed difference between the C++ way and the C way should be very small, and the C++ way is safer. Use std::string (and std::vector and all the rest) unless you have a very good reason not too, and then you should probably just write your own custom implementation. Reverting to the C way is just asking for issues.
I'm all for using abstractions and working smarter, but why pay such a performance penalty?