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_srcch_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までを消す

参考: C++ 文字列クラス std::string 入門

 

部分文字列

substr()を使用する.

  • string.substr(int begin_pos, int len);

大文字と小文字の一括変換

transform()を使用する.

  • transform(itr src_begin_pos, itr src_end_pos, itr dst_begin_pos, ::toupperまたは::tolower);