C++のstringを触るときのアレコレ
置換
replace()を使用する.
string.replace(int begin_pos, int n, string str);
stringのbegin_pos文字目(0オリジン)からn文字を削除してstrを挿入
nはstr.length()と一致する必要がないのでいい感じに置換できる
ただし,置換元の文字数が分かっていなければならないstd::replace(itr begin_pos, itr end_pos, char ch_src, char ch_dst);
find(ch_src, begin_pos)をend_posまで行い,ch_srcをch_dstに置換
つまり,先頭から置換されるし,複数回置換するためにはループする必要がある
さらに,charなのでちょっと使いづらそう(使わないとは言っていない)
参考: C++の文字列操作 その3 - minus9d's diary
除去
erase()を使用する.
remove()ではない.
string.erase(itr pos);
posの1文字だけ消すstring.erase(itr begin_pos, itr end_pos);
begin_posからend_posまでを消す
部分文字列
substr()を使用する.
- string.substr(int begin_pos, int len);
大文字と小文字の一括変換
transform()を使用する.
- transform(itr src_begin_pos, itr src_end_pos, itr dst_begin_pos, ::toupperまたは::tolower);