18

To use memset(), what is the difference between

#include <string>       //did not work

and

#include <string.h>     //worked

Thanks!

lukmac
  • 4,397
  • 8
  • 32
  • 34

2 Answers2

35

<string> is a C++ standard library include, and <string.h> is C standard library include.

The equivalent of <string.h> in C++ is <cstring>, although both will work.

The difference is: <cstring> wraps everything in the std namespace whereas <string.h> puts everything in the global namespace.

Also, expect some stricter type safety rules from <cstring>.

RushPL
  • 4,562
  • 1
  • 32
  • 44
6

In a modern C++ environment, you would #include <cstring> to get memset().

Ernest Friedman-Hill
  • 79,064
  • 10
  • 147
  • 183
  • 5
    Technically, You're only guaranteed `std::memset`, but all popular implementations just pull in the C header and add a `using` statement... – rubenvb Oct 06 '11 at 11:38