【发布时间】:2014-02-17 09:09:49
【问题描述】:
我正在将双精度值对的数据流解析为 std::vector>。我使用 boost 因为我认为它更有效。我的代码如下。
std::stringstream tmp_stream;
typedef double data_type;
typedef ::std::vector < data_type > V_d;
// type below describes type of the container of all data
typedef ::std::vector < V_d > V_v_d;
// list container
//typedef ::std::list < V_d > V_v_d;
V_v_d data;
::data_parser::Data_parser < V_v_d > data_parser;
data_parser ( tmp_stream, data );
我的输入文本文件被格式化为 { (132.181,0.683431), (136.886,0.988517), (137.316,0.504297), (133.653,0.602269), (150.86,0.236839) } 这些对没有正确解析,我收到了空对。可能是什么问题呢? 谢谢
【问题讨论】:
-
您将不得不向我们展示您的 data_parser 代码。
-
为什么不使用 std::pair
? -
不确定它是否与问题有关,但如果您总是使用成对的双打,使用
std::vector<std::pair<double,double> >进行存储可能会更有效。 -
不确定是什么代码在执行字符串 -> 浮点转换,但如果您使用的是 Intel,我建议您使用 Intel Numeric String Conversion 库:software.intel.com/en-us/node/485147
-
您是否跳过了所有其他内容,例如
(,{})?如果您使用istringstream并尝试将这些字符提取到double中,可能会发生奇怪的事情。另外,按照之前评论者的建议进行操作,并使用std::pair来存储对。