头文件 <string.h> <cstring> <string> 区别

匿名 (未验证) 提交于 2019-12-02 23:32:01

1. #include <string.h>

C语言的头文件,包含比如strcpy之类的字符串处理函数。注意C语言里没有string类的概念,不要弄混。

2. #include <string>

C++的头文件,包含std::string的定义,属于STL范畴

C++版本的头文件,和C语言版本的<string.h>对应,将C语言的函数定义在std命名空间内。

定义:

/** @file cstring  *  This is a Standard C++ Library file.  You should @c \#include this file  *  in your programs, rather than any of the @a *.h implementation files.  *  *  This is the C++ version of the Standard C Library header @c string.h,  *  and its contents are (mostly) the same as that header, but are all  *  contained in the namespace @c std (except for names which are defined  *  as macros in C).  */  // // ISO C++ 14882: 20.4.6  C library //  #pragma GCC system_header  #include <bits/c++config.h> #include <string.h>  #ifndef _GLIBCXX_CSTRING #define _GLIBCXX_CSTRING 1  // Get rid of those macros defined in <string.h> in lieu of real functions. #undef memchr #undef memcmp #undef memcpy #undef memmove #undef memset #undef strcat #undef strchr #undef strcmp #undef strcoll #undef strcpy #undef strcspn #undef strerror #undef strlen #undef strncat #undef strncmp #undef strncpy #undef strpbrk #undef strrchr #undef strspn #undef strstr #undef strtok #undef strxfrm  namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION    using ::memchr;   using ::memcmp;   using ::memcpy;   using ::memmove;   using ::memset;   using ::strcat;   using ::strcmp;   using ::strcoll;   using ::strcpy;   using ::strcspn;   using ::strerror;   using ::strlen;   using ::strncat;   using ::strncmp;   using ::strncpy;   using ::strspn;   using ::strtok;   using ::strxfrm;   using ::strchr;   using ::strpbrk;   using ::strrchr;   using ::strstr;  #ifndef __CORRECT_ISO_CPP_STRING_H_PROTO   inline void*   memchr(void* __s, int __c, size_t __n)   { return __builtin_memchr(__s, __c, __n); }    inline char*   strchr(char* __s, int __n)   { return __builtin_strchr(__s, __n); }    inline char*   strpbrk(char* __s1, const char* __s2)   { return __builtin_strpbrk(__s1, __s2); }    inline char*   strrchr(char* __s, int __n)   { return __builtin_strrchr(__s, __n); }    inline char*   strstr(char* __s1, const char* __s2)   { return __builtin_strstr(__s1, __s2); } #endif  _GLIBCXX_END_NAMESPACE_VERSION } // namespace

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!