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