설명 -


string은 기본 타입 char를 토대로 보완과 추가를 통해 만들어진 '문자열' 관리를 위한 표준 클래스다.


문자열을 편하게 관리할 수 있다. 기존 배열은 메모리의 낭비 혹은 크기의 확장에 의한 문제 등을 걱정했어야 했었다. 반면 포인터는 문자열 복사에 대응하지 못했고, 둘을 혼용해서 쓰는 것도 불편할 뿐더러.. 문자열을 위해 지원하는 string 함수들은 _s(secure) 버전에 들어서 사용 조건이 무척 불편하게 되거나 (인자를 4개씩 받아 처먹는다), 사용을 위한 제반 조건 (포인터를 괜시리 생성해서 또 고민해야한다) 따위가 따르는 문제가 있었다.


헌데 string은 이러한 모든 문제를 해결해준다!


기능 및 특징 -


string은 문자열을 관리하는 클래스다. 부언할 것 없이 문자열하면 무엇인지 감이 팍 올 것이다. string 클래스의 기본적인 특징은 아래와 같다.


특징 1.

string str = "test dest best";
printf_s("%s 크기 : %d\n",str.c_str() , str.capacity());
str += "ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ";
printf_s("%s 크기 : %d\n",str.c_str() , str.capacity());



capacity를 통해서 크기를 조사해보니.. 필요에 따라서 공간의 크기가 확장된다. 즉 메모리 공간을 가변적으로 차지하는 자료형이라고 할 수 있다.



특징 2.


==나 < 등의 연산자를 통한 비교가 가능 할 뿐더러 = , += 등의 연산자를 사용하여 값을 대입 / 추가하는 것이 가능하다. strcat, strcmp등을 사용하지 않고 복사와 대입은 물론, 비교까지 가능하게 된 것이다.




특징 3.


string 객체의 함수를 사용하여 c시절 string 헤더에서 존재했던 문자열 함수를 사용할 수가 있다. 비슷한 기능을 하지만 이름이 바뀌거나, 새로이 추가된 함수도 존재한다.


사용 방법 예시 및 이해도 -

string st; 혹은 string test = "qweqwe"; 와 같이 string 클래스의 객체를 선언하고 사용하면 된다. 단 c++에서 부터 지원된다. c에서는 지원하지 않는다.


장단점 및 심화비교 -

물론 장점만 있는 것은 아니다.. string에 대응하지 않는 클래스도 분명히 있으며, 과거부터 만들어서 주로 사용되지만 표준은 아니거나, 이미 개선된 버전이 존재하는 함수들에 대한 호환이 안된다. 물론 스트링에서는 이를 위해서 c_str()이라는 (char* 문자열로 반환하는) 함수를 지원하고 있다. 또한 char에 비하면 느리다.


첨부 자료 -


string 클래스를 어느정도 작성해보았다. 안타깝게도 이터레이터는 없다.


G_string.zip



참고한 주소 및 정보 - 

http://blog.naver.com/medicant

http://slowlywalk1993.tistory.com/entry/C-String-Class

http://itguru.tistory.com/198



Posted by GENESIS8

댓글을 달아 주세요