zoukankan      html  css  js  c++  java
  • 头文件 <string.h> <cstring> <string> 区别

    1. #include <string.h>

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

    2. #include <string>

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

    3. #include <cstring>

    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
  • 相关阅读:
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Maximum Depth of Binary Tree
    Sharepoint 2013 创建TimeJob 自动发送邮件
    IE8 不能够在Sharepoint平台上在线打开Office文档解决方案
    TFS安装与管理
    局域网通过IP查看对方计算机名,通过计算机名查看对方IP以及查看在线所有电脑IP
    JS 隐藏Sharepoint中List Item View页面的某一个字段
    SharePoint Calculated Column Formulas & Functions
    JS 两个一组数组转二维数组
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/10812471.html
Copyright © 2011-2022 走看看