<string.h> vs <string>

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Carmen Sei

    <string.h> vs <string>

    it seem to me that when doing include -

    #include <string.h- is CRT
    #inlcude <string- is C++ standard library

    Is that true those header with .h extension is CRT and those without
    extension <stringis C++ standard library headers?
  • Ian Collins

    #2
    Re: &lt;string.h&gt ; vs &lt;string&g t;

    Carmen Sei wrote:
    it seem to me that when doing include -
    >
    #include <string.h- is CRT
    No, it's an obsolete C++ header.

    There isn't a "CRT", there's the C and C++ standard libraries. The
    latter includes the former.

    --
    Ian Collins.

    Comment

    • Sharad

      #3
      Re: &lt;string.h&gt ; vs &lt;string&g t;


      "Ian Collins" <ian-news@hotmail.co mwrote in message
      news:65igpdF2g3 gvtU1@mid.indiv idual.net...
      Carmen Sei wrote:
      >it seem to me that when doing include -
      >>
      >#include <string.h- is CRT
      >
      No, it's an obsolete C++ header.
      Are you sure? Have you looked at <cstring>?

      Sharad


      Comment

      • Ian Collins

        #4
        Re: &lt;string.h&gt ; vs &lt;string&g t;

        Sharad wrote:
        "Ian Collins" <ian-news@hotmail.co mwrote in message
        news:65igpdF2g3 gvtU1@mid.indiv idual.net...
        >Carmen Sei wrote:
        >>it seem to me that when doing include -
        >>>
        >>#include <string.h- is CRT
        >No, it's an obsolete C++ header.
        >
        Are you sure? Have you looked at <cstring>?
        >
        Oops, I misread the OP.

        --
        Ian Collins.

        Comment

        • Ron Natalie

          #5
          Re: &lt;string.h&gt ; vs &lt;string&g t;

          Ian Collins wrote:
          Carmen Sei wrote:
          >it seem to me that when doing include -
          >>
          >#include <string.h- is CRT
          >
          No, it's an obsolete C++ header.
          >
          There isn't a "CRT", there's the C and C++ standard libraries. The
          latter includes the former.
          >
          The latter includes an obsolete version of the former.

          Comment

          • Jim Langston

            #6
            Re: &lt;string.h&gt ; vs &lt;string&g t;

            Carmen Sei wrote:
            it seem to me that when doing include -
            >
            #include <string.h- is CRT
            #inlcude <string- is C++ standard library
            >
            Is that true those header with .h extension is CRT and those without
            extension <stringis C++ standard library headers?
            Not always. An OS/Compiler specific header may have a .h or not, usually
            they do though.

            Most headers without an extention are part of the STL.

            Some headers with an .h extention are from the C routines.

            However, the standard C headers can be included by adding a 'c' to the front
            and removing the exteion. I.E.
            #include <string.h>
            becomes
            #include <cstring>

            So how would you catagorize cstring?



            --
            Jim Langston
            tazmaster@rocke tmail.com


            Comment

            • Pete Becker

              #7
              Re: &lt;string.h&gt ; vs &lt;string&g t;

              On 2008-04-03 01:50:28 -0400, "Jim Langston" <tazmaster@rock etmail.comsaid:
              Carmen Sei wrote:
              >it seem to me that when doing include -
              >>
              >#include <string.h- is CRT
              >#inlcude <string- is C++ standard library
              >>
              >Is that true those header with .h extension is CRT and those without
              >extension <stringis C++ standard library headers?
              >
              Not always. An OS/Compiler specific header may have a .h or not, usually
              they do though.
              >
              Most headers without an extention are part of the STL.
              >
              Some headers with an .h extention are from the C routines.
              >
              However, the standard C headers can be included by adding a 'c' to the front
              and removing the exteion. I.E.
              #include <string.h>
              becomes
              #include <cstring>
              >
              So how would you catagorize cstring?
              Let me restate that. Among the headers defined in the C++ standard:

              Headers without an extension describe names in the C++ standard library.
              Headers with a .h extension describe names in the C standard library,
              and put those names in the global namespace.
              Headers with names that are the same as the C headers but with a 'c' in
              front and no extension put names from the C standard library into
              namespace std.

              --
              Pete
              Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
              Standard C++ Library Extensions: a Tutorial and Reference
              (www.petebecker.com/tr1book)

              Comment

              • Martin York

                #8
                Re: &lt;string.h&gt ; vs &lt;string&g t;

                Is that true those header with .h extension is CRT and those without
                extension <stringis C++ standard library headers?
                >
                Not always. An OS/Compiler specific header may have a .h or not, usually
                they do though.
                >
                But also note (and just to clarify the above correct statement) that
                <string.h(as with several other header files) is an unsupported (or
                non standard) header and should NOT be used in modern code. It is
                usually put there so that old legacy code (and examples in old books)
                will not break, but it is not an official part of the C or C++
                libraries (It is there for historical compatibility ONLY).

                All C++ header files do NOT have a .h
                i.e. <strings>

                All (I think) C header files have a C++ version that puts the
                declarations in the std namespace. The C++ version has the same base
                name as the C version but drops the '.h' and prefix a 'c.
                i.e. <ctype.h is <cctype>
                etc.

                Comment

                • Pete Becker

                  #9
                  Re: &lt;string.h&gt ; vs &lt;string&g t;

                  On 2008-04-03 12:00:13 -0400, Martin York <Martin.YorkAma zon@gmail.comsa id:
                  >
                  >>Is that true those header with .h extension is CRT and those without
                  >>extension <stringis C++ standard library headers?
                  >>
                  >Not always. An OS/Compiler specific header may have a .h or not, usually
                  >they do though.
                  >>
                  >
                  But also note (and just to clarify the above correct statement) that
                  <string.h(as with several other header files) is an unsupported (or
                  non standard) header and should NOT be used in modern code.
                  It is both standard C and standard C++. It is deprecated in the C++
                  standard, which means that in some future standard it might not be
                  supported. But that's wishful thinking. In any event, it is part of
                  the current standard and part of C++0x, and its meaning is well defined.
                  It is
                  usually put there so that old legacy code (and examples in old books)
                  will not break, but it is not an official part of the C or C++
                  libraries (It is there for historical compatibility ONLY).
                  >
                  All C++ header files do NOT have a .h
                  i.e. <strings>
                  There is no standard header with that name.

                  --
                  Pete
                  Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
                  Standard C++ Library Extensions: a Tutorial and Reference
                  (www.petebecker.com/tr1book)

                  Comment

                  Working...