문자열 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