[C++] string 기능 - substr/find/rfind

Programming/C++_C#|2021. 3. 30. 14:06
반응형

안녕하세요.

포스팅 할 내용은 C++에 자주 쓰이는 문자열 클래스인 string인데요.

string에는 여러 함수가 있는데 substr/find/rfind에 대해 알아보겠습니다.

 

 


  • substr( )

substr( )은 새로운 메모리를 할당해 문자열 추출을 해주는 기능을 가진 함수인데요.

 

string substr( size_t pos = 0, size_t len = npos ) const;

인자값 1 pos : 시작지점

인자값 2 len : 길이

 

string을 리턴하고 인자값 2개를 넣는 형태를 가진 함수입니다.

아래 코드 예를 보겠습니다.

 

#include <iostream>
#include <string>

int main( )
{
     string strTest = "0123456789";
     string subTest = strTest.substr(2, 7);

     cout << "subTest : "  << subTest << endl;
     
     return 0;
}

 

결과값 : 

 

시작 위치는 2부터 7개까지 문자열은 뽑아내면 아래와 같이 "2345678"을 리턴합니다.

 

 

참고로 len은 문자열의 마지막 문자보다 더 길이가 길게 인자값을 넣으면 문자열의 마지막 문자까지만 리턴이 되서

인자값을 넣지 않으면 전체 문자열을 리턴합니다.

 

 

 

 

다른 예1

: 문자열 strTest를 5번부터 인덱스부터 끝까지 자른다.

 

string strTest = "HelloWorld";
cout << strTest.substr(5);

 

<결과값>

 

 

다른 예2

: 문자열 strTest를 2번부터 5번부터 인덱스까지 자른다.

 

string strTest = "HelloWorld";
cout << strTest.substr(2, 5);

 

<결과값>

 


  • find( ) / rfind( )

다른 예로 string을 분리해보도록 하겠습니다.

바로 find( ), rfind( )함수인데요.

 

find( 탐색 문자열, 인덱스 = 0 )

: 문자열 에서부터 검색해 인자값 문자열을 찾으면 첫번째로 나타나는 문자열의 인덱스를 리턴.

 

rfind( 탐색 문자열, 인덱스 = npos )

: 문자열 에서부터 검색해 인자값 문자열을 찾으면 첫번째로 나타나는 문자열의 인덱스를 리턴.

 

찾지 못하면 -1을 반환합니다.

 

#include <iostream>
#include <string>

int main( )
{
    string strTest            = "abcedfg.txt";
    int iPos                     = strTest.find('.');
    string strName         = strTest.substr(0, iPos);
    string strExtension   = strTest.substr(iPos + 1);

    cout << "이름 : " << strName << endl;
    cout << "확장자 : " << strExtension << endl;

     return 0;
}

 

결과값 : 

 

 

반응형

댓글()