csv文件中的错误double值

时间:2013-07-03 09:04:43

标签: c++ csv ofstream

我试图在CSV文件中总结我的算法的结果。但是有些价值观会丢失。例如,0.375保存为375,而0,125保存为125。

    if (options[SUMMARY]) {
        std::ofstream summary(options[SUMMARY].arg);
        summary << "Runtime" << ";" << runtime << std::endl;
        for (auto u : results) {
                  for (auto v : u.second) {
                    if (measures.size() == 0) {
                    summary << v.first << ";" << v.second.second << std::endl;
                } else if (measures.size() == 1) {
                    summary << v.first << ";"
                            << (measures[0])->getQuality(v.second.first) 
                                        << std::endl;
                    } 
                }
            }
        }
    }

有没有人有一些解释或想法来超越这个问题?

1 个答案:

答案 0 :(得分:0)

RFC-4180表示CSV实现可能在对小数点分隔符(以及其他内容)的解释上有所不同。尝试将语言环境填充到将.归类为小数分隔符的流中。

std::ofstream summary(options[SUMMARY].arg);
summary.imbue(std::locale(summary.getloc(), new std::numpunct<char>));