<string.h> vs <string> - c++

This is a discussion on <string.h> vs <string> - c++ ; it seem to me that when doing include - #include &lt;string.h&gt; - is CRT #inlcude &lt;string&gt; - is C++ standard library Is that true those header with .h extension is CRT and those without extension &lt;string&gt; is C++ standard library ...

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

<string.h> vs <string>

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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