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

Training for D-Day

ブログの内容は個人の見解であり、所属する企業を代表するものではありません。

MFC CStringをparse(パース) / Split(分割)してCStringArrayに格納スル方法

直感的にはバシッと一行でやって欲しいぐらいですが、MFCだと難しいです。
以下の記事が良いですね。

How to Parse Empty Tokens using CString::Tokenize() - CodeProject

SimpleTokenizer


MyTokenizer

の違いは、

各要素がDelimiterだけでもうまく機能してくれるか否かです。
例えば、与えたデータが、Field1,Field2,,,Field5の場合、
SimpleTokenizerだと、CStringArrayにはField1,Field2,Field5の3要素しか入りません。
MyTokenizerだと、CStringArrayには空の要素も加わり、Field1,Field2,,,Field5の5要素になります。

上記以外のほとんどの記事は、空の要素は無視しちゃってますので、テーブル形式を想像している方はデータが空だった場合に厄介なことになります。

visual c++ - Split functionality for MFC Cstring Class - Stack Overflow

How to split CString into Array ?

ベンチャーブログ: CStringを分割してみる(Split)
上記はビルドが通らなかったので(VS2013) あんまり頑張る気にもなれず…。
CStringArrayをreturnするのは良くない気がします。
使い手側がnewして引数で渡すとかにしないと、リークしそう。