본문 바로가기
카테고리 없음

특정 문자열 찾기/검색 &치환 strstr 함수 사용법 & 예제

by kangs' tong 2023. 10. 22.

특정 문자열 찾기/검색

문자열에서 특정 문자열을 찾는 것은 많은 프로그래밍 작업에서 필요한 기능입니다. C++에서는 strstr 함수를 사용하여 문자열에서 부분 문자열을 찾을 수 있습니다. strstr 함수는 <cstring> 헤더 파일에 정의되어 있으며, 다음과 같은 형식으로 사용할 수 있습니다:

const char* strstr(const char* str1, const char* str2);

strstr 함수는 첫 번째 문자열 str1에서 두 번째 문자열 str2를 검색합니다. 만약 str2str1에 포함되어 있다면, str1에서 str2의 첫 번째 나타나는 위치를 가리키는 포인터를 반환합니다. 만약 str2str1에 존재하지 않으면, 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 함수와 다른 문자열 조작 함수들인 memmovememcpy를 사용하여 수행됩니다. 결과는 다음과 같이 출력됩니다:

Goodbye, world! Goodbye, C++! Goodbye, programming!

마무리

이 포스팅에서는 C++에서 특정 문자열 찾기/검색과 문자열 치환에 대해 알아보았습니다. strstr 함수를 사용하여 문자열에서 부분 문자열을 찾고, strreplace 함수를 구현하여 문자열에서 특정 부분 문자열을 치환할 수 있습니다. 이러한 함수들은 문자열 작업을 더욱 효율적으로 수행하는 데 도움을 줍니다.

댓글