[C_ST85-易] 切割字串
問題描述 :
一段文字中,找出特殊字串,是程式設計文字處理的基本技巧。 輸入 一個字串,找出字串中特殊的字串,其中特殊字串包含 /n, /t, /a, /b, // 等五種 , 剖析文字的內容,找到特定的字串,計算讀到幾個,並輸出結果。
輸入說明 :
輸入一列的 文字 ,
例如:
Today/nisagoodday./nIlike.
輸出說明 :
計算找到的特殊字串,並輸出個數結果
輸出為:
2
範例 :
一段文字中,找出特殊字串,是程式設計文字處理的基本技巧。 輸入 一個字串,找出字串中特殊的字串,其中特殊字串包含 /n, /t, /a, /b, // 等五種 , 剖析文字的內容,找到特定的字串,計算讀到幾個,並輸出結果。
輸入說明 :
輸入一列的 文字 ,
例如:
Today/nisagoodday./nIlike.
輸出說明 :
計算找到的特殊字串,並輸出個數結果
輸出為:
2
範例 :
輸入範例
|
輸出範例
|
Today/nisagoodday./nIlike.
|
2
|
Would/byoulike/njavaprogrammig/n?
|
3
|
Accidents/ncan be//occur/tanywhere
around you home.
|
3
|
說明:
這裡有些小陷阱,如果出現//n,只用find()出來的結果,是2。
可是輸出期望,是1。
為了解決這個問題,就是找到後取代成"**",只要不是"//",當然要取代成"$$""%%""&&"...都可以。
- #include <iostream>
- using namespace std;
- int main() {
- // [C_ST85-易] 切割字串
- string strInput;
- getline(cin, strInput);
- string strFind[5] = {"/n", "/t", "/a", "/b", "//"};
- int count = 0;
- for (int i = 0; i < 5; i++)
- {
- string findstr = strFind[i];
- string R = "**";
- int fpos = 0;
- while (1)
- {
- fpos = strInput.find(findstr, fpos);
- if (fpos != string::npos)
- {
- strInput.replace(fpos, findstr.size(), R);
- fpos = fpos + findstr.size();
- }
- else
- {
- break;
- }
- count++;
- }
- }
- cout << count << endl;
- return 0;
- }
沒有留言:
張貼留言