2014년 6월 30일 월요일

[일기] string C++ 컨테이너.

C++ 표준 라이브러리지만 STL에 포함되지 않는,

C++ 표준 컨테이너의 요구사항을 모두 만족하지 않는 유사 컨테이너(almost container)인

string이 자주 사용되는데, 매번 찾기 귀찮아 일부만 기록을 이곳에 옮긴다.

멤버 정의 형식
 allocator_type : 메모리 관리자 형식
 const_iterator : const 반복자 형식
 const_pointer : const value_type* 형식
 const_reference : const value_type& 형식
 const_reverse_iterator : const 역 반복자 형식
 size_type : 원소 갯수 혹은 첨자 형식
 traits_type : 문자의 특성 형식
 value_type : 원소의 형식
 npos : 찬지 관련 '실패' 정의 값. 보통 -1.

 등

생성자

  string s
  string s(sz) : sz는 문자열
  string s(sz, n) : sz는 문자열이되, n은 반복횟수
  string s(n, c) : n개의 c문자로 s 생성
  string s(iter1, iter2) : 구간만큼의 문자로 s 생성 [1, 2)
  string s(p1, p2) : 포인터 구간에서 생성. [1, 2)

 멤버 함수

  append(sz) : sz 추가
  assign(sz)  : sz를 할당
  at(i) : i번 문자 반환(범위 점검 수행)
  c_str() : 널 문자를 포함한 문자열의 주소 반환.
  data()  : 널 문자 없는 배열 주소 반환.
  clear() : 비우기
  find(c) : c 문자를 검색.

  등

 연산자

  s[i] : i번째 위치 문자
  s+=s2 : s에 s2가 덧붙여짐
  s+s2   : 덧붙여진 string 생성
  s=s2   : 할당
  out<<s : 출력
  in>>s : s에서 읽음

  등

대부분은 vector와 유사하다.

string은 배열 기반이되, 마지막에 NULL이 들어가지 않는다.
compare에선 s1.compare(s2) 가 반환한 값이 양수면 s1 > s2이며, 음수면 s1 < s2이고 만일 0이면 s1 == s2란 뜻이다. 또 compare는 부분만 비교할 수도 있다.

length()는 size()와 같고 문자열 길이를 나타내고, copy는 첫 인자로 문자열을 복사하는데 첫 인자는 배열의 주소가 온다. 단, \0은 포함하지 않는다.

 char buf[100];
 string s("GoodBye");

 s.copy(buf, s.length());
 buf[s.length()] = \0;

 find는 문자나 부분 문자열의 위치를 반환하는데 찾는 문자 없으면 string::npos 정의값을 반환한다.


 나머진 천천히 추가해야지..

댓글 없음:

댓글 쓰기