我发现 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'变量)是:
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'
工作正常。
这是正确的行为吗?