由于我决定在应该在 Windows 和 Linux 上运行的程序内部使用 UTF-16,因此我需要替换一些字符串处理函数,因为我不想在用户模式代码的本机字符表示形式之间进行转换。但是,如果浮点转换比运行 iconv 慢,我可以使用 strtod/sprintf WINE的包装器。
问问题
306 次
1 回答
3
这些与十进制之间的转换很难既快速又正确。幼稚(但正确)的版本假设多精度整数,您可能不打算依赖它的实现。简而言之,包装您现有的stdtod
/sprintf
并且不要担心开销,它会小于使用这些函数的幼稚实现时的性能损失。
在“幼稚不正确”类别中,有一个strtod() 实现浮动,所有解释器都在主机缺少它时使用它。这个实现很糟糕(它可能会返回几个ULP的结果),但如果您不介意,您可以修改此代码来操作 UTF-16 字符。
注意:我认为在 C99 中有一个swprintf()
,但它是用于 的字符串wchar_t
,它不一定是 UTF-16,所以它可能不适合你。
于 2013-07-23T14:34:44.327 回答