Recent Posts
Recent Comments
Link
11-21 14:38
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

C++ 문자열 처리(string class) 본문

DEV&OPS/C & C++

C++ 문자열 처리(string class)

ALEPH.GEM 2021. 9. 1. 16:11

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 

 

 

 

 

 

 

 

 

 

 

 

 

DEV

 

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