的语言环境不变保证我使用boost::lexical_cast<std::string>(double)
将双精度转换为字符串,从而生成JSON序列化的字节流,即由.NET分析的(在远程端)。boost :: lexical_cast <>
我可以强制.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<>
不知道语言环境吗?
基本上,问题在于C++语言环境不是线程本地的,RAII尊重的属性。 – MSalters