STL - string - 참고(2)

2017. 2. 7. 13:39IT-개발/STL 및 Boost

반응형


(펌) - http://blog.naver.com/PostView.nhn?blogId=vosej_v&logNo=50176084445&redirect=Dlog&widgetTypeCall=true


string class
Header : <string>


.assign : 문자열을 할당
( 문자열 ) : 문자열을 할당한다.
( 개수, 문자 ) : 문자를 개수만큼 할당한다
( 문자열, 시작위치, 개수 ) : 매개변수 문자열의 시작위치부터 개수만큼을 호출한 문자열에 할당


  string s1, s2, s3 ;

  s1.assign( "ABCDEFG" ) ;     // s1 = "ABCDEFG"

  s2.assign( 3, 'a' ) ;               // s2 = "aaa"

  s3.assign( s, 2, 4 ) ;             // s3 = "CDEF" ( 문자열 s의 2부터 4개를 복사하여 할당 )




.append : +연산자의 역할처럼 문자열을 끝에 더한다.
( 문자열 ) : 문자열을 더한다
( 개수, 문자 ) : 문자를 개수만큼 끝에 더한다
( 문자열, 시작위치, 개수 ) :


  string s, s2 ;

  s.append( "ABCDEF" ) ;      // s = "ABCDEF"

  s.append( 3, 'x' ) ;              // s = "ABCDEFxxx"

  s2.append( s, 2, 4 ) ;          // s2 = "CDEF"

  s2 += "x" ;                          // s2 = "CDEFx"

 



.clear : 문자열의 내용을 모두 삭제

  s.clear() ;



.compare : 문자열을 비교 ( 사전순으로 비교 )

  s.compare( s2 ) ;          // s == s2이면 0,  s<s2이면 음수,  s>s2이면 양수를 반환



.empty : 문자열이 비었는지 확인

  s.empty() ;



.erase : 문자열을 지운다
( 시작위치, 개수 ) : 시작위치부터 개수만큼의 문자를 지운다. 

 

  string s = "ABCDEF" ;

  s.erase( 0, 3 ) ;                // s = "DEF" ( 인덱스 0부터 3개의 문자를 지운다 )

 



.find : 특정 문자열을 찾고, 그 시작위치를 반환
( 문자 ) : 인덱스 0부터 해당 문자를 찾고, 시작위치를 반환한다.
( 문자열 ) : 인덱스 0부터 해당 문자열을 찾고, 그 시작위치를 반환한다.
( 문자열, 시작위치 ) : 시작위치부터 문자열을 찾고, 시작위치를 반환한다.

 

  string s1 = "abcd" ;

  string s2 = "b" ;

 

  int location = s1.find( s2 ) ;

  location = s1.find( s2, x ) ;

  location = s1.find_first_of( s2, x ) ;

  location = s1.find_first_not_of( s2, x ) ;  

  location = s1.find_last_of

  s1.find_last_not_of




.replace : 문자열을 대체
( 시작위치, 개수, 문자열 ) : 호출한 문자열의 시작위치부터 개수만큼의 문자를 매개변수 문자열로 대체한다.

 

  string s = "abc_def" ;

  s.replace( 4, 3, "zzz" ) ;                // s = "abc_zzz"  ( 인덱스 4부터 3개의 문자를 "zzz"로 대체 )

 



.insert : 문자열을 지정한 위치에 삽입
( 시작위치, 문자열 ) : 시작위치에 문자열을 삽입한다.

 

  string s = "ABCDEF" ;

  s.insert( 2, "xx" ) ;                         //  s = "ABxxCDEF"

 



.pop_back : 문자열에서 가장 뒤의 문자 하나를 빼낸다.
.push_back : 문자열의 가장 뒤에 문자 하나를 추가한다.

 

  string s = "ABCDEF" ;

  s.pop_back() ;                               // s = "ABCDE"

  s.push_back( 'x' ) ;                        // s = "ABCDEx"

 



.resize : 문자열의 크기를 재설정

 

  s

 



.size, .length : 문자열의 크기를 반환
.max_size : 문자열이 최대로 가질수 있는 길이를 반환한다.

 

  string s = "ABCDEF" ;

  int size = s.size() ;                    // size = 6         ( 실제 사용되고 있는 크기 )

  int length = s.length() ;             // length = 6     ( 문자열의 길이 )

 



.capacity : 할당된 메모리의 크기를 반환 ( reallocation 없이 사용할 수 있는 문자수를 반환 )

 

  string s = "ABCDEF" ;

  int capacity = s.capacity() ;       // size = 6, capacity = 15

 

capacity가 size보다 클때, 속도는 더 빠르다 !
 = capacity가 size보다 크면, 기존 공간에 문자를 추가하면 되지만
    그 반대의 경우에는 문자를 추가하기 위해 새로운 메모리를 할당해야 하기 때문이다.


.reserve : reallocation을 피하기 위해, 메모리의 최소용량을 지정
( 크기 ) : 크기만큼의 여유 메모리를 할당한다.
** 이때, 매개변수의 크기는 현재 capacity보다 크지않으면 의미도 효과도 없다.

 

  string s = "ABCDEF" ;             // size = 6, capacity = 15

  s.reserve( 100 ) ;                   // size = 6, capacity = 111

  s.reserve( 1000 ) ;                 // size = 6, capacity = 1007

 



.substr : 문자열의 일부분을 문자열로 반환
( 시작위치 ) : 시작위치부터 끝까지의 문자들을 문자열로 반환
( 시작위치, 개수 ) : 시작위치부터 개수만큼의 문자를 문자열로 반환

 

  string s = "ABCDEF" ;

  string s2 = s.substr( 4 ) ;        // s2 = "EF"    ( 인덱스 4부터 끝까지의 문자열을 반환 )

  string s3 = s.substr( 1, 3 ) ;    // s3 = "BCD" ( 인덱스 1부터 3까지의 문자열을 반환 )

 



.swap : 문자열을 서로 바꾼다

 

  string a = "ABCD" ;

  string b = "WXYZ" ;

  a.swap( b ) ;                            // a = "WXYZ", b = "ABCD"

  b.swap( a ) ;                            // a = "ABCD", b = "WXYZ"

 



.at : 문자열에서 특정위치의 문자를 액세스

 

  string s = "ABCDEF" ;

  char c = s.at(3) ;                      // c = 'D'

 



.c_str : string 문자열을 char* 형으로 바꾸어 반환한다.

 

  string s = "ABCDEF" ;

  int length = strlen( s.c_str() ) ;  

 


.date
.copy
.back
.front
.begin