0

boost::tokenizer で奇妙なことを見つけました。(boost version 1.53.0, 1.52.0 )

    tokenizer<escaped_list_separator<char> > tok(line);
    vec.assign( tok.begin(), tok.end() );
    ......
    double volume = lexical_cast<double>( vec[6] );

このコードは、Linux (Ubuntu 12.04.2 および gcc バージョン 4.6.3) ではクラッシュし、Windows 7 (VS 2010 Express) では問題なく動作します。準備したい文字列( 'line' variable )は次のとおりです。

    2012-12-03,09:30:00.000,35.3,35.5,35.26,35.47,26963

Linux の場合:

     vec[6] is '26963\r'

lexical_cast がクラッシュします。

Windows では:

     vec[6] is '26963'

正常に動作します。

これは正しい動作ですか?

4

0 に答える 0