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.