삶 가운데 남긴 기록 AACII.TISTORY.COM
C++ 문자열 처리(string class) 본문
string class
Header <string>
string s, s1, s2, s3;
.assign(): 문자열 할당
//인수로 지정된 문자열을 할당
s1.assign("ABCDEFGH"); //s1="ABCDEFGH"
//문자를 특정 개수 만큼 문자열에 할당
s2.assign(3, 'A'); //s2 = "AAA"
//문자열의 지정된 인덱스 부터 특정 개수를 복사해서 할당
s3.assign(s1, 2, 4) //s3 = "CDEF"
.append(): 문자열 추가
//기존 문자열 뒤에 추가
s.append("ABCDEF"); //s = "ABCDEF"
//문자를 특정 개수 만큼 기존 문자열 뒤에 추가
s.append(3,'a'); //s = "ABCDEFaaa"
//문자열의 지정된 인덱스 부터 특정 개수를 복사해서 기존 문자열 뒤에 추가
s.append(s,2,4) //s = "ABCDEFaaaCDEF"
.clear(): 문자열의 내용을 모두 삭제
.compare(): 문자열을 사전 순으로 비교
s.compare(s2); //s == s2 이면 0, s>s2 이면 양수, s<s2 이면 음수를 리턴
.empty(): 문자열이 비어 있는지 확인
s.empty(); // bool 타입으로 리턴. true or false
.erase(): 특정 인덱스의 문자열을 삭제
s = "ABCDEF";
//인덱스 0부터 3개를 지운다.
s.erase(0,3); //s = "DEF"
.find(): 특정 문자열을 찾고 그 시작 위치 인덱스(int값)를 return
s1 = "abcd";
s2 = "b";
// .find(문자열, 시작위치)
int location = s1.find(s2);
.replace(): 문자열 교체
s = "abc_def";
//.replace(시작위치, 개수, 교체할 문자열)
s.replace(4,3,"xxx"); // s = "abc_xxx"
.insert(): 문자열을 지정한 위치에 insert
s = "ABCDEF";
s.insert(2, "xx"); // s = "ABxxCDEF"
.size(): 문자열의 실제 사용되고 있는 크기 int로 리턴
.length(): 문자열의 길이(문자의 개수) int로 리턴
.capacity(): 할당된 메모리 byte크기 int로 리턴
.substr(): 문자열의 일부를 문자열로 리턴
s = "ABCDEF";
//인덱스 4부터 문자열의 끝까지 리턴
s2 = s.substr(4); //s2 = "EF"
//인덱스 1부터 3까지 리턴
s3 = s.substr(1,3); //s3 = "BCD"
.swap(): 문자열을 서로 바꿈
s1 = "ABCD";
s2 = "WXYZ";
s1.swap(s2); // s1 = "WXYZ", s2 = "ABCD"
.at(): 문자열에서 특정 위치의 문자(char)를 리턴
s = "ABCDEF";
char c = s.at(3); //c = 'D'
.c_str(): string형 문자열을 char* 형으로 변환
s = "ABCDEF";
int length = strlen(s.cstr());
문자열 처리 방식
- 싱글 바이트 방식: 1byte로 하나의 문자를 처리. 아스키코드.
- 멀티 바이트 방식: 아스키코드는 1byte로 한글은 2byte로 처리하는 방식.
- 유니코드 방식: 모든 문자를 2byte 로 처리하는 방식.(아스키코드 포함)
- 멀티 바이트 & 유니코드 동시 지원 방식: 각 방식에 맞게 자동 변환해주는 방식
멀티 바이트, 유니코드, 동시 지원(TCHAR) 문자열 함수 정리
- 문자열 복사: strcpy -> wcscpy -> _tcscpy
- 사이즈만큼 복사: strncpy -> wcsncpy -> _tcsncpy
- 문자열 길이: strlen -> wcslen -> _tcslen
- 두 문자열 이어 붙이기: strcat -> wcscat -> _tcscat
- 사이즈 만큼 이어 붙이기: strncat -> wcsncat -> _tcsncat
- 문자열 비교: strcmp -> wcscmp -> _tcscmp (반환 값(-1, 0, 1))
- 사이즈 만큼 문자열 비교: strncmp -> wcsncmp -> _tcsncmp
- 대소문자 무시 문자열 비교: stricmp -> wcsicmp -> _tcsicmp
- 사이즈만큼 대소문자 무시 문자열 비교: strnicmp -> wcsnicmp -> _tcsnicmp
- 문자 찾기: strchr -> wcschr -> _tcschr
- 문자열 끝부터 검색해서 문자 찾기: strrchr -> wcsrchr -> _tcsrchr
- 문자열 찾기: strstr -> wcsstr -> _tcsstr
- 문자 찾기(두 번째 인수를 찾고자 하는 문자열로 구성): strpbrk -> wcspbrk -> _tcspbrk
- 문자열 자르기(두 번째 인수를 문자열로 구성 가능, 해당 문자가 널로 치환 됨): strtok -> wcstok -> _tcstok
- 문자 치환(첫째 인수의 모든 문자를 두번째 인수 문자로 변경함): strset -> wcsset -> _tcsset
- 사이즈만큼 문자 치환: strnset -> wcsnset -> _tscnset
- 대문자로 치환: strupr -> wcsupr -> _tcsupr
- 소문자로 치환: strlwr -> wcslwr -> _tcslwr
- 문자열 역 정렬: strrev -> wcsrev -> _tcsrev
728x90
'DEV&OPS > C & C++' 카테고리의 다른 글
kernel object and object handle (0) | 2021.09.10 |
---|---|
windows 시스템 함수 호출 오류시 오류코드 획득 (0) | 2021.09.07 |
Polymorphic 자료형 (0) | 2021.09.03 |
MFC String 자료형 (0) | 2021.09.01 |