在 C++ 中查詢一個字串在另一個字串中所有出現位置的索引


假設我們有字串 str,和另一個子串 sub_str,我們必須找到 sub_str 在 str 中所有出現位置的索引。假設 str 是 “aabbababaabbbabbaaabba”,sub_str 是 “abb”,那麼索引將是 1 9 13 18。

為了解決此問題,我們可以在 C++ STL 中使用 substr() 函式。此函式接受子字串將開始檢查的初始位置和子字串的長度,如果與 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

更新於:2019 年 12 月 19 日

超過 3K 的瀏覽量

開啟您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.