【发布时间】:2023-03-22 15:00:01
【问题描述】:
我正在使用boost::lexical_cast<std::string>(double) 将双精度转换为字符串,生成 JSON 序列化字节流,即(在远程端)由 .NET 解析。
我能够强制 .NET 使用 InvariantCulture 进行解析,从而在每种可能的语言上返回可预测的结果。
但是,我无法在 boost::lexical_cast 文档中找到此保证。我试了一下,对于不同的语言环境,它的工作方式相同。但是,我不能仅从少数测试中确定,我是否遗漏了文档中的某些内容,或者这根本无法保证,我必须使用其他东西?
编辑: 我发现了一个问题。
std::locale::global(std::locale("Czech"));
std::cout << boost::lexical_cast<std::string>(0.15784465) << std::endl;
返回0,15784465,这是不希望的。我可以强制boost::lexical_cast<> 不知道语言环境吗?
【问题讨论】:
-
考虑使用 sqlite printf,它是区域设置不变的,可以做你想做的事。包括在各种其他库中的所有 c++ 转换函数都依赖于语言环境。
标签: c++ serialization boost invariantculture