Algorithm

[알고리즘] C++ string::find() 사용법

용성군 2021. 12. 30. 20:05
728x90
반응형

알고리즘 풀 때, 문자열에 대한 문제가 나오는 경우가 많다. 이때 마다 인터넷을 검색해서 풀 수 없으니 정리를 해보고자 한다. 

C++ string 변수에서 특정 문자열을 찾을 때, std::string의 find() 함수를 사용한다. 

예시1

#include <string>
#include <stdio.h>

using namespace std;

int main()
{
    string s = "Enter ui1234 Muzi";
    size_t index = s.find("ui1234");//size_t는 unsigned long type
    
    printf("%zu\n", index); // zu는 unsigned long에 대한 type specifier
    //출력 : 6
    
}

위 코드에서 index의 값은 찾고자 하는 문자열의 시작 위치가 된다. 다시 말해, text.find("ui1234")는 6을 반환한다. 

 

예시2(index 번째 부터 find)

#include <string>
#include <stdio.h>

using namespace std;

int main()
{
    string s = "Enter ui1234 Muzi";
    size_t index = s.find("ui1234",7);//size_t는 unsigned long type
    
    printf("%zu\n", index); // zu는 unsigned long에 대한 type specifier
    //출력 : 쓰레기값 출력.
}

위 코드에서 index의 값은 7번째 부터 ui1234를 찾기 때문에 쓰레기 값이 나온다. 

반응형

주의 사항

찾고자 하는 문자열이 없을 때,  -1이 반환되는것이 아니라 쓰레기값이 반환된다. 즉,  string::npos를 반환한다.

예시

#include <string>
#include <stdio.h>

using namespace std;

int main()
{
    string s = "Enter ui1234 Muzi";
	if(s.find("Jayz") == string::npos)
    {
    	printf("Not found\n");
    }
    else
    {
    	printf("Found\n");
    }
    //출력 : Not found
}

출력이 Not found 된다.

728x90
반응형