C 不带strtd/sprintf的浮点转换

C 不带strtd/sprintf的浮点转换,c,string,floating-point,C,String,Floating Point,因为我已经决定在一个应该在Windows和Linux上运行的程序中内部使用UTF-16,所以我需要替换一些字符串处理函数,因为我不想在用户模式代码的本机字符表示之间进行转换。然而,如果浮点转换比运行iconv慢,我可以在strtd/sprintf周围使用一个包装器 did.这些十进制和十进制之间的转换很难做到快速和正确。天真(但正确)的版本假设多精度整数,这可能是您不打算依赖的实现。简言之,将现有的stdtod/sprintf打包,不要担心开销,它将比使用这些函数的原始实现时的性能损失要小 在“

因为我已经决定在一个应该在Windows和Linux上运行的程序中内部使用UTF-16,所以我需要替换一些字符串处理函数,因为我不想在用户模式代码的本机字符表示之间进行转换。然而,如果浮点转换比运行iconv慢,我可以在strtd/sprintf周围使用一个包装器
did.

这些十进制和十进制之间的转换很难做到快速和正确。天真(但正确)的版本假设多精度整数,这可能是您不打算依赖的实现。简言之,将现有的
stdtod
/
sprintf
打包,不要担心开销,它将比使用这些函数的原始实现时的性能损失要小

在“天真不正确”这一类中,当主持人缺少口译员时,所有口译员都会使用一个浮动的口译员。这个实现很糟糕(它可能会返回一个由多个字符组成的结果),但是如果您不介意的话,您可以修改此代码来处理UTF-16字符



注意:我认为C99中有一个
swprintf()
,但它是用于
wchar\u t
字符串的,它不必是UTF-16,因此可能对您不起作用。

虽然我可以推断您试图问什么,但明确说明您的问题会更好。swprintf在windows上工作,但是对于linux,我需要首先使用iconv,因为它使用utf32或utf8。@user877329我想这就是你在问题中没有提到它的原因。