특정 문자열 찾기/검색
문자열에서 특정 문자열을 찾는 것은 많은 프로그래밍 작업에서 필요한 기능입니다. C++에서는 strstr
함수를 사용하여 문자열에서 부분 문자열을 찾을 수 있습니다. strstr
함수는 <cstring>
헤더 파일에 정의되어 있으며, 다음과 같은 형식으로 사용할 수 있습니다:
const char* strstr(const char* str1, const char* str2);
strstr
함수는 첫 번째 문자열 str1
에서 두 번째 문자열 str2
를 검색합니다. 만약 str2
가 str1
에 포함되어 있다면, str1
에서 str2
의 첫 번째 나타나는 위치를 가리키는 포인터를 반환합니다. 만약 str2
가 str1
에 존재하지 않으면, nullptr
를 반환합니다.
예를 들어, 다음은 strstr
함수를 사용하여 문자열에서 "hello"라는 문자열을 찾는 예제입니다:
#include <iostream>
#include <cstring>
int main() {
const char* str1 = "This is a hello world example";
const char* str2 = "hello";
const char* result = strstr(str1, str2);
if (result != nullptr) {
std::cout << "The string \"" << str2 << "\" was found at index " << result - str1 << std::endl;
} else {
std::cout << "The string \"" << str2 << "\" was not found" << std::endl;
}
return 0;
}
위 예제에서 문자열 str1
에는 "hello"라는 문자열이 존재하므로, strstr
함수는 문자열의 시작 주소에서 "hello"가 시작하는 인덱스(result - str1
)를 반환합니다. 결과는 다음과 같이 출력됩니다:
The string "hello" was found at index 10
문자열 치환
때로는 문자열에서 특정 부분 문자열을 찾아서 다른 문자열로 치환해야 할 때도 있습니다. C++에서는 strreplace
함수를 사용하여 이 작업을 수행할 수 있습니다. strreplace
함수는 직접 제공되지 않지만, 문자열을 다루는 다른 함수들의 조합을 사용하여 구현할 수 있습니다. 다음은 strreplace
함수의 예제입니다:
#include <iostream>
#include <cstring>
void strreplace(char* str, const char* oldStr, const char* newStr) {
size_t oldLen = strlen(oldStr);
size_t newLen = strlen(newStr);
size_t strLen = strlen(str);
char* foundStr = strstr(str, oldStr);
while (foundStr != nullptr) {
memmove(foundStr + newLen, foundStr + oldLen, strLen - (foundStr - str) - oldLen + 1);
memcpy(foundStr, newStr, newLen);
strLen += newLen - oldLen;
foundStr = strstr(foundStr + newLen, oldStr);
}
}
int main() {
char str[] = "Hello, world! Hello, C++! Hello, programming!";
strreplace(str, "Hello", "Goodbye");
std::cout << str << std::endl;
return 0;
}
위 예제에서 strreplace
함수는 문자열 str
에서 "Hello"를 검색하고, "Goodbye"로 치환합니다. 이러한 치환 작업은 strstr
함수와 다른 문자열 조작 함수들인 memmove
와 memcpy
를 사용하여 수행됩니다. 결과는 다음과 같이 출력됩니다:
Goodbye, world! Goodbye, C++! Goodbye, programming!
마무리
이 포스팅에서는 C++에서 특정 문자열 찾기/검색과 문자열 치환에 대해 알아보았습니다. strstr
함수를 사용하여 문자열에서 부분 문자열을 찾고, strreplace
함수를 구현하여 문자열에서 특정 부분 문자열을 치환할 수 있습니다. 이러한 함수들은 문자열 작업을 더욱 효율적으로 수행하는 데 도움을 줍니다.
댓글