2012-02-13 5 views

답변

55
  • <string.h>는 C 스타일의 null로 끝나는 문자열에 대한 strcpy, strlen 같은 오래된 기능이 포함되어 있습니다.
  • <string>은 주로 std::string, std::wstring 및 기타 클래스를 포함합니다.
+21

'string.h'를 사용하는 것은 C++ 내에서 더 이상 사용되지 않습니다. 안에 포함 된 기능이 필요하면'cstring' 헤더를 사용해야합니다. 이것은 어느 정도 C 라이브러리에서 나온 것이기 때문에 "이 둘의 차이점은 무엇인가?"라는 문제를 다소간 우회합니다. –

10

string.h은 C의 헤더 파일이며 string은 C++의 헤더 파일입니다.

+1

''또한 C++ 헤더 파일로 간주 될 수를 조작하는 함수를 정의 클래스 C++ string입니다. :) – iammilind

+0

Nope! 은 C++와 함께 사용됩니다. –

19

string.h은 C 헤더, ​​마침표가 아닌 C 헤더입니다.

+0

당신은 몇 가지 파일을 할 때 .h/.cpp 내가 .h를 제거해야합니다 또는 귀하의 대답은 단지에 대한, SDF 파일과 같은 것을 의미합니까? – Valmond

+13

필자는 다른 식으로 말하는 것이 더 좋습니다. '은 C 헤더가 아니고 C 헤더가 아닙니다.' – iammilind

15

<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>을 사용합니다.

+2

''은 ''의 동의어가 아닙니다. 'cstring'은'std' 네임 스페이스에 물건을 넣습니다 ('std' 네임 스페이스 밖에 놓을 수도 있습니다). 반면에 ''는 그렇지 않습니다. –

+1

C 스타일'.h' 헤더 사용은 C++에서 더 이상 사용되지 않습니다. –

+0

@PrasoonSaurav 더 이상 사용하지 않으려면 처음부터 표준에 포함되어 있어야합니다. –

8

<string.h>에는 C 라이브러리 문자열 기능이 포함되어 있습니다. strlen, strcmp

<string>는 형식 정의 std::stringstd::wstring을 갖는다 std::basic_string 대한 정의를 포함한다. 그것이 차이점입니다.

그들은 실제로 문자열을 처리한다는 사실 외에 전혀 관계가 없습니다.

2

나는 <string.h>이 C 용으로, <string>이 C++ 용이라고 생각합니다. 그래서 string.h 실례가 안됩니다. '\0' 종료 char[]있는 C 문자열에 대한 기능을 포함하는, (cstring는 기본적으로 C++ string.h 래퍼 동안)

2

바와 같이, string.hcstring 및 C는 헤더이다. <string> 인 C++ 클래스 문자열을 사용하려고합니다.

5

완전히 다른 헤더입니다.

<string>

<string.h> or <cstring>는 C 문자열과 배열

관련 문제