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 정의값을 반환한다.
 나머진 천천히 추가해야지..
 
댓글 없음:
댓글 쓰기