Recent Posts
Recent Comments
Link
07-22 15:41
Today
Total
관리 메뉴

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

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

DEV&OPS/Snippets

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

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

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 > Snippets' 카테고리의 다른 글

kernel object and object handle  (1) 2021.09.10
windows 시스템 함수 호출 오류시 오류코드 획득  (0) 2021.09.07
Polymorphic 자료형  (1) 2021.09.03
MFC String 자료형  (0) 2021.09.01
windows service 관련 문제 해결  (0) 2020.06.05