我正在尝试为“文本”文件编写一个解析器,我知道这些文件将被编码在一个Windows单字节代码页中。这些文件包含基本数据类型的文本表示,至少可以说,我对这些表示缺乏规范。
在Windows-874中,我注意到接近尾端的十个不显眼的小角色,叫做THAI DIGIT ZERO to THAI DIGIT NINE。
我正在尝试编写这个解析器,使其非常健壮,但我在黑暗中工作,因为有许多不同的程序可以生成这些数据文件,而且我无法访问这些源。
我想知道的是: Microsoft std::string库中的任何函数都可以将实数数据类型转换为包含非char const * 阿拉伯数字的或 C++ (即序列化)。
我不使用微软的C++库,所以不能引用任何特定的库,但是一个虚构的例子可能是char const * IntegerFunctions::ToString(int i)。
发布于 2012-01-20 14:38:04
这些数字当然可以由Microsoft库创建。属性LOCALE_IDIGITSUBSTITUTION和LOCALE_SNATIVEDIGITS确定由OS格式化的数字是否将使用本机(即非ASCII)数字。这些最初是Unicode,因为这是Windows内部创建字符串的方式。当您有一个泰国语言环境,并将Unicode转换为CP874时,这些字符将被保留。
演示此行为的一个简单函数是GetNumberFormatA。
发布于 2012-01-20 11:40:09
有点相反的答案,但此页似乎表明微软的运行时库在执行您想要做的事情时能够理解相当多(但不是全部)非拉丁数字,即将一个字符串解析为一个数字。
泰语也包括在内,这似乎表明在自定义代码中支持泰语也是个好主意。
为了在这里包含更多信息,链接到页面声明微软的msvcr100运行时支持从以下字符集解码数字:
整个页面包括更多的编程环境和更多的语言(也有大量的负面因素)。
https://stackoverflow.com/questions/8940394
复制相似问题