Earlier today (actually yesterday due to my time-zone) I was attempting a programming interview using Visual Studio 2012 for C++ on Interview Street (which uses g++).
To be brief, I came across several compilation errors1 when I was using
#include <cstring>
which was provided by the skeleton code in one of the question, and after turning to
#include <string>
all compilation errors magically disappeared.
However, upon submission to Interview Street, I had to add c back; otherwise I got compilation errors.
It was the first time I was bitten by non-standardization….
My question is: what inside <string> and <cstring> took me (precious) more than half an hour?
1 For anyone who is curious:
One error by Visual Studio 2012 if using <cstring> is:
error C2338: The C++ Standard doesn’t provide a hash for this type.
in
c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef
possibly for string as key in unordered_map
One error by g++ if using <string> is:
‘strlen’ was not declared in this scope
The
cstringheader provides functions for dealing with C-style strings — null-terminated arrays of characters. This includes functions likestrlenandstrcpy. It’s the C++ version of the classicstring.hheader from C.The
stringheader provides thestd::stringclass and related functions and operators.The headers have similar names, but they’re not really related beyond that. They cover separate tasks.