어떻게<string>과 <string.h>의 차이점은 무엇입니까?
std::map <std::string , int> m;
m["a"]=1;
이
#include <string.h>
와
#include <string>
하지만 (나는 2010 MSVC 사용하고 있습니다)로 컴파일이 코드를 온?
어떻게<string>과 <string.h>의 차이점은 무엇입니까?
std::map <std::string , int> m;
m["a"]=1;
이
#include <string.h>
와
#include <string>
하지만 (나는 2010 MSVC 사용하고 있습니다)로 컴파일이 코드를 온?
<string.h>
는 C 스타일의 null로 끝나는 문자열에 대한 strcpy
, strlen
같은 오래된 기능이 포함되어 있습니다.<string>
은 주로 std::string
, std::wstring
및 기타 클래스를 포함합니다.string.h
은 C의 헤더 파일이며 string
은 C++의 헤더 파일입니다.
'string
입니다. :) –
iammilind
Nope!
<string.h>
CString을한다 - http://www.cplusplus.com/reference/clibrary/cstring/
<string>
는 C++ 문자열 클래스입니다 - http://www.cplusplus.com/reference/string/
아래 니콜 올가미 코멘트 당 편집 및 인터넷 검색의 비트 :
<cstring>
보통 <string.h>
같은 일을 가져옵니다 그러나 std
네임 스페이스에 있습니다. <string.h>
은 일반적으로 모든 것을 전역 네임 스페이스로 가져옵니다. Google 검색에 따르면 사용중인 라이브러리 구현에 따라 달라집니다.
개인적으로 C 스타일 문자열 헬퍼가 필요한 경우에만 개인적으로 <cstring>
을 사용합니다.
'
C 스타일'.h' 헤더 사용은 C++에서 더 이상 사용되지 않습니다. –
@PrasoonSaurav 더 이상 사용하지 않으려면 처음부터 표준에 포함되어 있어야합니다. –
<string.h>
에는 C 라이브러리 문자열 기능이 포함되어 있습니다. strlen
, strcmp
등
<string>
는 형식 정의 std::string
및 std::wstring
을 갖는다 std::basic_string
대한 정의를 포함한다. 그것이 차이점입니다.
그들은 실제로 문자열을 처리한다는 사실 외에 전혀 관계가 없습니다.
나는 <string.h>
이 C 용으로, <string>
이 C++ 용이라고 생각합니다. 그래서 string.h
실례가 안됩니다. '\0'
종료 char[]
있는 C 문자열에 대한 기능을 포함하는, (cstring
는 기본적으로 C++ string.h
래퍼 동안)
바와 같이, string.h
cstring
및 C는 헤더이다. <string>
인 C++ 클래스 문자열을 사용하려고합니다.
완전히 다른 헤더입니다.
<string>
는
<string.h> or <cstring>
는 C 문자열과 배열
'string.h'를 사용하는 것은 C++ 내에서 더 이상 사용되지 않습니다. 안에 포함 된 기능이 필요하면'cstring' 헤더를 사용해야합니다. 이것은 어느 정도 C 라이브러리에서 나온 것이기 때문에 "이 둘의 차이점은 무엇인가?"라는 문제를 다소간 우회합니다. –