所以我需要計算一個字符串在一個字符串內多少次。我看到有人早些時候發佈了一個更復雜的版本,但我的任務需要我無法使用庫,必須手動完成。檢查每個字符串中有多少字符串在字符串中(簡化)
下面我創建一個程序,它會查找長字符串中每個短字符串的開始。
讓我們假設該
string longword = "bigbigbiggbigbigbiig;
string shortword = "big" ;
for (int i = 0; i < 20;)
{
for(int j = 0; j < 3; j++)
{
if(longword[i]==shortword[j])
{
i++;
}
}
cout << (i-(shortword)+1) << ", ";
}
我的問題是輸出下面有時它讀取像三字連續,或連續GGG。你可以看到它的工作原理,直到它結束輸出它開始於0,3,6,10,13,15,17
問題是它一直運行正常,直到6,然後它讀取7,並將錯誤的起始位置放在那裏。
我在做什麼錯了?問題是我通常不能使用高級庫和代碼來按照指示進行操作。
謝謝!
分割成幾部分的問題。首先編寫一個函數,在字符串中找到一個子串並返回它的位置。一旦你有了它(並測試了它),你的問題就會大大簡化。 – vsoftco
順便說一句,這個問題也可以措辭,「找到一個字符串中子字符串的出現次數。」使用該措詞可能會幫助您找到搜索結果。 – jpaugh
「...我的任務要求我不能使用庫...」+「字符串長字」似乎與此相矛盾,或者你授予了你的教師的緯度使用'std :: string',部分是標準庫?如果你的類只允許使用'std :: string' *及其成員*,後者應該*非常*,特別是['find()'](http://en.cppreference.com/w/cpp/string/basic_string的/發現)。 – WhozCraig