題目描述:
編寫乙個程式實現將字串中所有的"you"替換成"we"
輸入: 輸入包含多行資料,每行資料是乙個字串,長度不超過1000,資料以eof結束
輸出: 對於輸入的每一行,輸出替換後的字串
樣例輸入:
you are what you do
樣例輸出:
we are what we do
通常思路就是掃一遍字串,碰到』y』就看後面兩個是不是』o』和』u』,然後把位置後移3個,繼續掃,輸入因為有空格並且要求以eof結束,所以用getline()來讀入
關於getline()
#include
#include
#include
using namespace std;
intmain()
else
printf
("%c"
,ss[i]);
}printf
("\n");
}return0;
}
其實就是關於串的模式匹配演算法,找對應的下標,什麼bf,kr,kmp,都太複雜了,看懂都麻煩,實現還要維護一堆東西,蒟蒻的我怎麼可能實現,想要高階點的的那為啥不用string類的find()和replace()函式
find
size_type find
(const value_type* ptr,
size_type _off =0)
const
;引數:
ptr 成員函式要搜尋的 c 字串
_off 搜尋開始處的索引
返回值:
搜尋成功時,則為搜尋的子字串的首個字元的索引;否則為 npos
replace
basic_string
&replace
( size_type _pos1,
size_type _num1,
const value_type* ptr)
;引數:
_pos1 運算元 字串替換開始的索引
_num1 最大運算元 字串中要替換的字元數
ptr c字串,它將是運算元字串的字元源(就是你用來替換的字串)
返回值:
運算元進行替換字串(替換完的字串)
簡單的小例子,用find()在str1中找str2出現的位置,並用replace()做替換
string str1=
"i love ncstoj"
;string str2=
"ncst"
;int pos=str1.
find
(str2)
;//int pos=str1.find("ncst"); //直接打乙個字元或字串也行
if(pos==string:
:npos)
// 如果str1中找不到str2那麼返回值一定是npos ,一般為-1
cout<<
"不存在"
<
else
(1)結果
(2)結果
本題**:
#include
#include
using namespace std;
intmain()
return0;
}
關於npos:
size_t型別,初始化為-1。
size_t為無符號的整數型別可表示的元素數、 字串中的索引。也就是說其是一種用來記錄大小的資料型別。
平時用sizeof()運算獲得的就是size_t型別,可以強制轉換為int。
#include
#include
size_t npos=-1
;cout<<
"npos值: "
<
cout<<
"size_t最大值: "
<::>
max(
)<
cout<<
"對npos進行強制轉換後:"
這也就解釋了返回值為什麼既可以等於npos又可以等於-1
南陽 113字串替換
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 編寫乙個程式實現將字串中的所有 you 替換成 we 輸入 輸入包含多行資料 每行資料是乙個字串,長度不超過1000 資料以eof結束 輸出對於輸入的每一行,輸出替換後的字串 樣例輸入 you are what you do 樣...
習題7 7 字串替換
習題7 7 字串替換 description 本題要求編寫程式,將給定字串中的大寫英文本母按以下對應規則替換 原字母對應字母az bycx dw xcyb zainput 輸入在一行中給出乙個不超過80個字元 並以回車結束的字串。output 輸出在一行中給出替換完成後的字串。sample inpu...
習題7 7 字串替換
本題要求編寫程式,將給定字串中的大寫英文本母按以下對應規則替換 原字母對應字母az bycx dw xcyb za輸入在一行中給出乙個不超過80個字元 並以回車結束的字串。輸出在一行中給出替換完成後的字串。only the 11 capital letters are replaced.lnly t...