toge's diary

コンピュータ関連の趣味をつらつらと。

boost::tokenizerではまる

あああ、久しぶりに使ったらはまったよ。

  typedef boost::tokenizer > tokenizer;
  boost::char_separator sep(",");

  std::string sizeData = sizeSrc->Value();

  tokenizer tokens(sizeData, sep);

  tokenizer::iterator iter = tokens.begin();

  float x = boost::lexical_cast(*iter++);
  float y = boost::lexical_cast(*iter++); 

これはOK。

  typedef boost::tokenizer > tokenizer;
  boost::char_separator sep(",");

  tokenizer tokens(std::string(sizeSrc->Value()), sep);

  tokenizer::iterator iter = tokens.begin();

  float x = boost::lexical_cast(*iter++);
  float y = boost::lexical_cast(*iter++); 

こっちだと、なぜか区切った結果が3文字より長くなるとtokenの取得に失敗します。
なんとも不可解だけど、そういうものなんでしょうね。