18

To use memset(), what is the difference between

#include <string>       //did not work

and

#include <string.h>     //worked

Thanks!

lukmac
  • 4,617
  • 8
  • 33
  • 34

2 Answers2

36

<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,732
  • 1
  • 34
  • 44
6

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

Ernest Friedman-Hill
  • 80,601
  • 10
  • 150
  • 186
  • 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