2012-05-23 2 views
3

저는 C++ 튜토리얼 책을 읽었으며 저자는 대부분의 C++ 컴파일러에 String 클래스 라이브러리가 포함되어 있다고 말합니다. 그렇다고하더라도 직접 작성한 String 클래스를 만드는 것이 좋습니다. 불행히도, 저자는 이유를 기술하지 않습니다. 누구나 동의/동의하지 않는 이유는 무엇입니까?C++ : 고유 한 String 클래스를 만드는 것이 좋습니다?

Xcode를 사용하고 있으며 제공되는 String 클래스가 나에게 잘 들리지만 몇 시간 동안 만 작업 했으므로 제한 사항을 알지 못합니다.

미리 감사드립니다.

+9

여러분이 직접 String 클래스를 만들어야한다는 것은 결코 아닙니다. –

+3

이 책은 몇 살입니까? –

+0

'std :: string'으로 충분하지 않습니까? 즐거움을 얻으려고 항상 재미있어하지만 유익한 것은 아닙니다. – chris

답변

6

당신에게 오래된 책이있는 것처럼 들립니다.

C++ 표준 라이브러리에는 std::string 클래스가 포함되어 있으므로 널리 사용되는 라이브러리에서 이미 만난 버그를 고치거나 수정하지 말고 사용해야합니다.

초보자 인 것처럼 그렇습니다. 자신을 구현하는 데 스윙을 걸어야합니다. 어떤 '진짜'프로젝트에서도 사용하지 마십시오.

+0

실제로 STL에는 std :: string이 포함되지 않았습니다. std :: string은 STL을 표준 라이브러리에 추가 할 때 STL 패러다임에 맞도록 약간 씩 박살 냈지만 STL은 포함하지 않았고 포함하지 않았습니다. –

+0

@CrazyEddie : 나는 항상 그랬다고 생각했지만 현실이 약간 더 복잡하다는 것을 몰랐다. 내가 여기에 그것을 다루는 게시물을 찾았 : http://stackoverflow.com/questions/5972546/is-stdstring-part-of-the-stl –

+0

정확히'std :: string' 아니었지만, 일부 배포판은 STL에는 bstring (기본 문자열)이 포함되었습니다. 내가 기억 하듯이, 알렉산더 스테파노프 (Alexander Stepanov)는 단순한 몇 가지 간단한 예를 간략하게 설명하고자한다고 말했습니다. –

2

는 자신의 String 클래스

를 작성하는 것이 좋습니다 나는 저자가 자신의 기술을 개발하는 좋은 프로그래밍 연습으로, 자신의 String 클래스를 만들 제안 생각합니다.

이 실제 생산 코드 또는 비 학술 코드

3

는 C++이 String 클래스가 없습니다에 대한 자신의 String 클래스를 만들 암시하는 (달랐어) 터무니없는 것입니다. 그러나 std::string 클래스는 기본 문자열 기능을 다루며 표준에 의해 보장됩니다. 그것을 사용하려면 #include <string>해야합니다.

std::string에서 제공되는 것보다 많은 기능이 필요한 경우 문자열에 작동하는 무료 함수를 추가 할 수 있습니다. 제 3 자 문자열 구현 (MS의 CString, RogueWave의 RWCstring)도 있지만, 기본적인 것들만하는 경우에는 개인적으로 매우 유용하지 않습니다. 내가 (를 제외하고는 완전히 std::string 클래스를 재 작성하는 것이 좋습니다있을 거라고 생각하지 않습니다

1

표준 라이브러리의 std::string 클래스는 정수에 등을 변환, 정규 표현식에와 일치, 분할 문자열을 포함한 문자열 클래스에서 일반적으로 많은 시설 부족 필요에 따라 근본적으로 호환되지 않습니다.) 그러나 이러한 기능 중 일부를 제공하기 위해 std::string 클래스의 하위 클래스를 작성하는 것이 좋습니다.

+0

추가 필드를 입력하지 않도록하십시오. 그렇지 않으면, 하위 클래스 인스턴스를 가리키는'std :: string' 포인터를'삭제 '하려고 시도하면 메모리 누수가 발생합니다. – someguy

+0

나는 그것이 가치가 있지만, 나는 downvote하지 않았다. –

+2

'std :: string'에는 문자열 클래스의 일부로 속하지 않기 때문에 이러한 기능이 없습니다. 그들은 자유 기능으로 쉽게 구현 될 수 있습니다. –

0

자신 만의 문자열 클래스를 만들 수있는 몇 가지 이유가 있습니다. 예를 들어 기존 문자열을 수정하는 대신 새로운 미분 문자열을 만들기 위해 최적화 된 함수로 불변 문자열 클래스를 만들려는 경우가 있습니다. 다중 스레드 코드. 그러나 이것은 초보자의 책을 읽고 어쨌든 적어도 세 번 다시 생각해야한다면 분명히해야 할 일이 아닙니다.

사람들이 말한 것처럼 std :: string은 99.9 %의 사물에 사용됩니다.

관련 문제