본문 바로가기
프로그래밍/C++

C++ ] 문자열 탐색 및 조작 함수, find() 외

by eteo 2024. 6. 11.

 

 

 

문자열 탐색 함수

 

  • find : 문자열/문자의 처음 등장 위치 찾기
  • rfind : 문자열/문자의 마지막 등장 위치 찾기
  • find_first_of : 문자 집합 중 하나라도 처음으로 등장하는 위치 찾기
  • find_last_of : 문자 집합 중 하나라도 마지막으로 등장하는 위치 찾기
  • find_first_not_of : 주어진 문자 집합에 없는 첫번째 문자 위치 
  • find_last_not_of : 주어진 문자 집합에 없는 마지막 문자 위치 찾기

 

✔️ 위의 문자열 탐색함수는 문자열 내에서 특정 조건을 만족하는 요소를 찾지 못했을 경우 string::npos를 반환한다. string::npos는 상수값으로 size_t 타입의 최대값이다.

✔️ find와 rfind 함수는 주어진 문자열에서 특정 문자열 뿐만 아니라 단일 문자를 찾는데도 사용할 수 있다.

 

 

 

 

find : 문자열/문자의 처음 등장 위치 찾기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    size_t pos = str.find("world");
    if (pos != std::string::npos)
        std::cout << "Found 'world' at position: " << pos << std::endl;
    else
        std::cout << "'world' not found" << std::endl;

    return 0;
}
Found 'world' at position: 7

 

 

 

rfind : 문자열/문자의 마지막 등장 위치 찾기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world! Welcome to the world.";
    size_t pos = str.rfind("world");
    if (pos != std::string::npos)
        std::cout << "Last 'world' found at position: " << pos << std::endl;
    else
        std::cout << "'world' not found" << std::endl;

    return 0;
}
Last 'world' found at position: 29

 

 

 

 

find_first_of : 문자 집합 중 하나라도 처음으로 등장하는 위치 찾기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    size_t pos = str.find_first_of("aeiou");
    if (pos != std::string::npos)
        std::cout << "First vowel found at position: " << pos << std::endl;
    else
        std::cout << "No vowels found" << std::endl;

    return 0;
}
First vowel found at position: 1

 

 

 

 

find_last_of : 문자 집합 중 하나라도 마지막으로 등장하는 위치 찾기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    size_t pos = str.find_last_of("aeiou");
    if (pos != std::string::npos)
        std::cout << "Last vowel found at position: " << pos << std::endl;
    else
        std::cout << "No vowels found" << std::endl;

    return 0;
}
Last vowel found at position: 7

 

 

 

 

 

find_first_not_of : 주어진 문자 집합에 없는 첫번째 문자 위치 

 

#include <iostream>
#include <string>

int main() {
    std::string str = "12345;67890";
    size_t pos = str.find_first_not_of("0123456789");
    if (pos != std::string::npos)
        std::cout << "First non-digit found at position: " << pos << std::endl;
    else
        std::cout << "No non-digit characters found" << std::endl;

    return 0;
}
First non-digit found at position: 5

 

 

 

 

find_last_not_of : 주어진 문자 집합에 없는 마지막 문자 위치 찾기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "12345;678;90";
    size_t pos = str.find_last_not_of("0123456789");
    if (pos != std::string::npos)
        std::cout << "Last non-digit found at position: " << pos << std::endl;
    else
        std::cout << "No non-digit characters found" << std::endl;

    return 0;
}
Last non-digit found at position: 9

 

 

 

 

 


 

 

문자열 탐색 함수와 자주 쓰이는 문자열 조작 함수

 

  • substr : 부분 문자열 추출하기
  • erase : 문자열 일부 삭제하기
  • replace : 문자열 일부 대체하기
  • insert : 특정 위치에 문자열 삽입하기

 

 

substr : 부분 문자열 추출하기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    std::string sub = str.substr(7, 5); // 시작 위치 7에서 5글자를 추출
    std::cout << "Substring: " << sub << std::endl;

    return 0;
}
Substring: world

 

erase : 문자열 일부 삭제하기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    str.erase(5, 7); // 시작 위치 5에서 7글자를 삭제
    std::cout << "After erase: " << str << std::endl;

    return 0;
}
After erase: Hello!

 

 

replace : 문자열 일부 대체하기

 

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello.hex";
    str.replace(6, 3, "bin"); // 시작 위치 6에서 3글자를 "bin"으로 대체
    std::cout << "After replace: " << str << std::endl;

    return 0;
}
After replace: Hello.bin

 

 

 

insert : 특정 위치에 문자열 삽입하기

 

#include <iostream>
#include <string>

int main() {
    std::string phoneNumber = "01012345678";
    // 번호 사이에 하이픈(-) 삽입
    phoneNumber.insert(3, "-");
    phoneNumber.insert(8, "-");
    std::cout << "Formatted Phone Number: " << phoneNumber << std::endl;

    return 0;
}
Formatted Phone Number: 010-1234-5678