문자열 str과 또 다른 하위 문자열 sub_str이 있다고 가정하고 str에서 sub_str의 모든 발생에 대한 인덱스를 찾아야 합니다. str이 "aabbababaabbbbabbaaabba"이고 sub_str이 "abb"라고 가정하면 인덱스는 1 9 13 18이 됩니다.
이 문제를 해결하기 위해 C++ STL에서 substr() 함수를 사용할 수 있습니다. 이 함수는 검사를 시작할 위치의 초기 위치와 sub_str의 길이가 sub_str과 같으면 부분 문자열의 길이를 가져온 다음 위치를 반환합니다.
예시
#include<iostream> using namespace std; void substrPosition(string str, string sub_str) { bool flag = false; for (int i = 0; i < str.length(); i++) { if (str.substr(i, sub_str.length()) == sub_str) { cout << i << " "; flag = true; } } if (flag == false) cout << "NONE"; } int main() { string str = "aabbababaabbbabbaaabba"; string sub_str = "abb"; cout << "Substrings are present at: "; substrPosition(str, sub_str); }
출력
Substrings are present at: 1 9 13 18