[C++] 문자열에서 특정 문자열 또는 특정 문자 찾기 std::string::find()

bolee·2022년 11월 26일
0

C++

목록 보기
5/16
post-thumbnail

std::string::find()

size_t find (const string& str, size_t pos = 0) const noexcept; // string (1)
size_t find (const char* s, size_t pos = 0) const; // c-string (2)
size_t find (const char* s, size_t pos, size_type n) const; // buffer (3)

size_t find (char c, size_t pos = 0) const noexcept; // character (4)

string 객체 내부에 존재하는 string 객체 내에 특정 문자열을 찾거나 특정 문자를 찾는 메서드(method) 또는 공개 멤버 함수(public member function)이다.
가장 처음 발견한 곳의 인덱스(index)를 반환한다.

C 언어 스타일을 포함해서 총 4가지 형태가 존재한다.
그중 3 가지는 특정 문자열을 찾는 것이고, 나머지 1 가지는 특정 문자를 찾는 형태이다.


특정 문자열 찾기

string (1)

size_t find (const string& str, size_t pos = 0) const noexcept; // string (1)

Parameters

parametersdescription
str검색할 특정 문자열
pos검색을 시작할 위치
문자열 길이보다 크면 함수는 일치 항목을 찾지 않는다.
기본값은 0이다.(전체 검색)

Return value

처음으로 검색된 항목의 시작 인덱스
일치하는 항목이 없으면 string::npos 반환

c-string (2)

size_t find (const char* s, size_t pos = 0) const; // c-string (2)

Parameters

parametersdescription
s검색할 char type array pointer
pos검색을 시작할 위치
문자열 길이보다 크면 함수는 일치 항목을 찾지 않는다.
기본값은 0이다.(전체 검색)

Return value

처음으로 검색된 항목의 시작 인덱스
일치하는 항목이 없으면 string::npos 반환

buffer (3)

size_t find (const char* s, size_t pos, size_type n) const; // buffer (3)

Parameters

parametersdescription
sPointer to an array of characters.
pos검색을 시작할 문자 위치
문자열 길이보다 크면 함수는 일치 항목을 찾지 않는다.
기본값은 0이다.(전체 검색)
n일치시킬 길이

Return value

처음으로 검색된 항목의 시작 인덱스
일치하는 항목이 없으면 string::npos 반환


특정 문자 찾기

character(4)

size_t find (char c, size_t pos = 0) const noexcept; // character (4)

Parameters

parametersdescription
c검색할 특정 문자(character)
pos검색을 시작할 위치
문자열 길이보다 크면 함수는 일치 항목을 찾지 않는다.
기본값은 0이다.(전체 검색)

Return value

처음으로 검색된 항목의 인덱스
일치하는 항목이 없으면 string::npos 반환


Example

#include <iostream>       // std::cout
#include <string>         // std::string

int main ()
{
  std::string str ("There are two needles in this haystack with needles.");
  std::string str2 ("needle");

  // different member versions of find in the same order as above:
  // string (1)
  std::size_t found = str.find(str2);
  if (found!=std::string::npos)
    std::cout << "first 'needle' found at: " << found << '\n';

  // buffer (3)
  found=str.find("needles are small", found + 1, 6);
  if (found!=std::string::npos)
    std::cout << "second 'needle' found at: " << found << '\n';

  // c-string(2)
  found=str.find("haystack");
  if (found!=std::string::npos)
    std::cout << "'haystack' also found at: " << found << '\n';

  // character (4)
  found=str.find('.');
  if (found!=std::string::npos)
    std::cout << "Period found at: " << found << '\n';

  // let's replace the first needle:
  str.replace(str.find(str2), str2.length(), "preposition");
  std::cout << str << '\n';

  return 0;
}

Output

first 'needle' found at: 14
second 'needle' found at: 44
'haystack' also found at: 30
Period found at: 51
There are two prepositions in this haystack with needles.

참고 자료

0개의 댓글