+ Reply to Thread
Page 1 of 2 1 2 LastLast
Results 1 to 10 of 11

<string.h> vs <string>

  1. #1
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default <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 <string> is C++ standard library headers?

  2. #2
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>

    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.

  3. #3
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>


    "Ian Collins" <ian-news@hotmail.com> wrote in message
    news:65igpdF2g3gvtU1@mid.individual.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



  4. #4
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>

    Sharad wrote:
    > "Ian Collins" <ian-news@hotmail.com> wrote in message
    > news:65igpdF2g3gvtU1@mid.individual.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.

  5. #5
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>


    "Carmen Sei" <fatwallet951@yahoo.com> wrote in message
    news:js28v3to5i8qm6cfammju25gb0na4mh0is@4ax.com...
    > it seem to me that when doing include -
    >
    > #include <string.h> - is CRT
    > #inlcude <string> - is C++ standard library


    The intention of <string.h> is for the C style string category of functions
    like strcpy, strlen etc. <string> is meant for the std::string class in the
    C++ Standard library. At least with Comeau just including <string> takes
    care of <string.h> also, but I am not sure if it's yet a standard behavior.

    Sharad



  6. #6
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>

    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.

  7. #7
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>

    Sharad wrote:
    > "Carmen Sei" <fatwallet951@yahoo.com> wrote in message
    > news:js28v3to5i8qm6cfammju25gb0na4mh0is@4ax.com...
    >> it seem to me that when doing include -
    >>
    >> #include <string.h> - is CRT
    >> #inlcude <string> - is C++ standard library

    >
    > The intention of <string.h> is for the C style string category of functions
    > like strcpy, strlen etc. <string> is meant for the std::string class in the
    > C++ Standard library. At least with Comeau just including <string> takes
    > care of <string.h> also, but I am not sure if it's yet a standard behavior.
    >
    > Sharad
    >

    It is allowed for it to do this.
    It is not REQUIRED for it to do so.

    If you're going to need the C string functions, you need to include
    string.h or cstring.

    >


  8. #8
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>

    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 <string> is 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@rocketmail.com



  9. #9
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>

    On 2008-04-03 01:50:28 -0400, "Jim Langston" <tazmaster@rocketmail.com> said:

    > 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 <string> is 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)


  10. #10
    Junior Member
    Join Date
    Nov 2009
    Posts
    0

    Default Re: <string.h> vs <string>


    > > Is that true those header with .h extension is CRT and those without
    > > extension <string> is 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.

+ Reply to Thread
Page 1 of 2 1 2 LastLast