sscanf() で「空白や改行で区切られていない文字列」の読み取り

"mask,flag" みたいなカンマで区切られた文字列を分割したいときに、_stscanf_s()。

LPCTSTR text = _T("mask,flag");
TCHAR value1[100] = {0};
TCHAR value2[100] = {0};
int count = _stscanf_s(text, _T("%[^,],%[^,]"),
    value1, _countof(value1),
    value2, _countof(value2));
if(count < 2) {
  // 変数に取り込まれた数が足りないからエラー
}

%s の変わりに %[取り込まない文字の文字セット] を指定すれば良い。

しらんかった。いつから使えたんだろう。
正規表現の [] と似たような感じで指定できるみたい。


strchr()とかCString::Tokenize()とか正規表現とかとか使いたくない感じの時とか使えるかな。