2010-11-23 2 views
1

char*, w_char*, CString, std::string의 문자열을 사용하고 LPTSTR과 같은 일부 typedef와 숙련 된 C++ 프로그래머를 제외한 다른 사람이 이해할 수없는 문자의 순열이 있습니다.C++에는 몇 개의 문자열 유형이 있습니까?

필자는 문자열을 다룰 때 저자가 C++을 비 일관성으로 비판하는 기사를 읽은 것을 기억합니다 (오래 전에). 그는 C++에서 다양한 문자열 유형을 정확하게 제공했습니다. 이 기사 나 C++에서 사용할 수있는 여러 가지 문자열 유형을 제공하는 다른 참조를 찾고 싶습니다.

언제든지 또 다른 typedef를 만들 수 있으므로 질문은 다음과 같습니다. C++에서 현재 널리 사용되는 문자열 유형 중 가장 낮은 하한은 무엇입니까?

+6

불행히도이 질문에는 답변이 없습니다. 정확한 숫자를 얻고 새로운 문자열 유형을 만들면'++ exactNumber'가됩니다 –

+0

오늘 알려진 가장 낮은 하한값을 얻는 것이 문제입니다) – Marek

+0

"얼마나 많은 문자열 타입은 C++에 존재합니까? ", _ is_ 진짜 질문. "오늘날 C++에서 일반적으로 사용되는 문자열 유형 중 가장 낮은 범위는 무엇입니까?"라는 굵게 표시된 질문은 그렇지 않습니다. –

답변

1

C++에는 몇 개의 문자열 유형이 있습니까?

세 가지 문자열 유형 (Wikipedia 참조) 언어로 정의됩니다

  • std::string (basic_string<char>에 대한 형식 정의)
  • std::wstring (basic_string<wchar_t>에 대한 형식 정의)
  • basic_string (클래스 템플릿)

char *은 문자열이 아닙니다. char에 대한 포인터입니다.

w_char*은 문자열이 아닙니다. w_char에 대한 포인터입니다.

CString은 (는) 언어로 정의되지 않았습니다.

물론 내 자신의 문자열 형식을 만들 수 있습니다 : CCoolString. 's'를 추가하면 'z'로 저장됩니다. 하지만 그것은 언어 자체의 일부가 아닙니다. 그것은 단지 내 코드 일뿐입니다. 내부적으로는 std::string을 사용합니다.


최고는 C++ 오늘날 알려진 일반적으로 사용되는 문자열 유형의 수의 하한 무엇입니까?

실제 질문이 아닙니다. 그것은 사용자에 의존하기 때문에 대답 할 수 없습니다.

+0

그래서 C *에서 문자열을 사용하는 방법 중 하나로서 char *를 참조한 이유입니다. – Marek

+0

그리고 언어 사양의 일부인 형식에 대해 자주 묻지 않습니다. 오히려 일반적으로 사용되는 문자열 유형에 관한 것입니다. – Marek

+0

@Marek 나는 개념을 분명히하려고 노력했다. 사실, char *를 사용하여 문자열을 관리하는 한 가지 단점은 문자열이 아닌 다른 문자열에서 char에 대한 포인터를 말할 수 없다는 것입니다. 예를 들어, 함수 서명에서. –

0

C++에는 기본 문자열 유형이 없습니다. char * 및 w_char *를 사용하면 원하는 모든 문자열을 만들 수 있습니다. std :: string, CString 및 LPTSTR은 모두 다른 라이브러리의 일부이며 표준 라이브러리의 일부입니다. (그들은있을 수도 있고 그렇지 않을 수도 있습니다). 문자열 유형이 될 수있는 자신 만의 MarekString을 만들 수 있습니다. 그리고 C++이 실제로 일관성이 없기 때문에 Joel Spolsky가 기본 데이터 형식으로 만들 것을 제안한 것을 기억합니다.

P. 당신은 char []와 w_char []를 잊어 버렸습니다.

+1

하지만 하나 있습니다 : std :: string. –

+0

아마도 많은 사람들을 잊어 버렸습니다. 내가 언급 한 원본 기사에서 "문자열 유형을 처리하는 방법 160 가지"와 같은 것을 회상합니다 – Marek

관련 문제