설명 -
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 클래스를 어느정도 작성해보았다. 안타깝게도 이터레이터는 없다.
참고한 주소 및 정보 -
http://blog.naver.com/medicant
http://slowlywalk1993.tistory.com/entry/C-String-Class
http://itguru.tistory.com/198
'프로그래밍 > C, C++' 카테고리의 다른 글
void 포인터의 delete의 소멸자 호출 (0) | 2015.03.30 |
---|---|
inline 함수 (0) | 2015.03.29 |
string 클래스 만들어보기 (0) | 2015.03.28 |
friend 키워드 [friend 전역 함수 , friend 클래스 , friend 멤버 함수] (3) | 2015.03.26 |
getchar / getche / getch / gets / putchar / putch / puts (0) | 2015.03.06 |
conio.h (0) | 2015.03.06 |
댓글을 달아 주세요