読者です 読者をやめる 読者になる 読者になる

mcommit's message

大阪でソフトウェア開発の仕事をしている simotinこと宮崎といいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

CStringとstd::stringのメソッド対応関係

VC(MFC)のCStringやCArray,ClistなどのCXxxクラスは機能が充実していて使いやすい。

しかし、linuxに移植する場合などでSTLのstd::stringやstd::vector,std::list等に置き換える場合にメソッド名が違っていてすんなり移植できません。※もちろん移植を前提にしていればMFCが提供するクラスは極力使わないのがベストですが、単純にそうもいかないこともあると思います。

(クラスは置換すれば比較的簡単に済みますが)メソッドは戻り値や引数といったインターフェースの違いに注意しつつ、適切に変更しなければいけません。

CStringのメソッドの対応関係を何度もネットで調べるうちに自分でまとめておこうと思い対応表を作りました。
せっかくなのであげておきたいと思います。

機能 CString std::string コメント
文字列を空にする Empty clear Emptyはメモリの解放が行われるがclearはメモリの解放は行わない
文字列中から指定した文字を検索 Find find findは見つからない場合npos(-1)を返す
空文字かどうか判定する IsEmpty empty -
文字列のバイト数 GetLength length -
大文字化 MakeUpper 該当なし taransform( str.begin(), str.end(), str.begin(), toupper)で対応する
小文字化 MakeUpper 該当なし taransform( str.begin(), str.end(), str.begin(), tolower)で対応する


■参考にさせて頂いたサイト
http://www.cplusplus.com/reference/string/
sarudeki.jp