我无法double
使用 打印值wsprintf()
。我试过sprintf()
了,效果很好。
用于wsprintf()
和sprintf()
的语法如下:
wsprintf(str,TEXT("Square is %lf "),iSquare); // Does not show value
sprintf(str," square is %lf",iSquare); // works okay
我在使用时是否犯了任何错误wsprintf()
?
我无法double
使用 打印值wsprintf()
。我试过sprintf()
了,效果很好。
用于wsprintf()
和sprintf()
的语法如下:
wsprintf(str,TEXT("Square is %lf "),iSquare); // Does not show value
sprintf(str," square is %lf",iSquare); // works okay
我在使用时是否犯了任何错误wsprintf()
?
wsprintf
不支持浮点数。错误在于使用它。
如果你想要类似的东西sprintf
,但对于宽字符/字符串,你想要swprintf
。
实际上,由于您使用的是TEXT
宏,因此您可能希望_stprintf
改为:它将与TEXT
用于决定字符串是窄还是宽的相同预处理器宏同步从窄实现转变为宽实现。然而,这整个方法在很大程度上是微软仍然销售和支持基于 32 位 NT 内核和 16 位内核的 Windows 版本的遗留物。16 位版本只有极少的宽字符支持,因此 Microsoft 努力允许将单个源代码库编译为使用窄字符(针对 16 位内核)或宽字符(针对 32 位内核)内核)。16 位内核已经消失了很长时间,几乎没有人真正有理由再支持它们了。
对于它的价值:wsprintf
几乎完全是一个历史遗迹。显然w
代表. Windows
早在(回到 16 位时代)时,它就作为 Windows 的一部分包含在内。它是在不支持浮点的情况下编写的,因为当时 Windows 内部没有使用任何浮点——这就是为什么它内置了MulDiv之类的例程的部分原因,尽管对浮点做(大致)相同的是相当琐碎。
该函数wsprintf()
不支持浮点参数,swprintf()
如果您使用浮点值,请尝试使用。
更多关于 swprint 的信息可以在这里找到
大概你没有编译为 UNICODE 并且 TEXT 被#defined 为只是一个常规字符串。