문자열 탐색 함수
- 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
'프로그래밍 > C++' 카테고리의 다른 글
C++ ] CLI Loading indicator와 Progress bar (0) | 2024.10.28 |
---|---|
C++ ] 가변 인자 템플릿(Variadic Templates) 활용 (0) | 2024.09.02 |
C++ ] std::condition_variable 사용법 (0) | 2024.05.12 |
C++ ] std::unique_lock과 std::lock_guard의 차이 (0) | 2024.05.04 |
C++ ] std::unordered_map과 std::map의 차이, unordered_map의 사용법 (0) | 2024.04.26 |