gpt4 book ai didi

c++ - 我应该使用 wsprintf() 将 double 打印为宽字符串吗?

转载 作者:可可西里 更新时间:2023-11-01 14:52:56 25 4
gpt4 key购买 nike

我无法使用 wsprintf() 打印 double 值。我尝试了 sprintf(),它运行良好。

用于 wsprintf()sprintf() 的语法如下:

wsprintf(str,TEXT("Square is %lf "),iSquare); // Does not show value

sprintf(str," square is %lf",iSquare); // works okay

我在使用 wsprintf() 时是否犯了任何错误?

最佳答案

wsprintf 不支持 float 。错误在于使用它。

如果你想要像 sprintf 这样的东西,但是对于宽字符/字符串,你需要 swprintf 来代替。

实际上,由于您使用的是 TEXT 宏,因此您可能需要 _stprintf 来代替:它会同步地从窄实现转变为宽实现TEXT 预处理器宏用于决定字符串是窄还是宽。然而,这整个方法在很大程度上是微软仍然销售和支持基于 32 位 NT 内核和 16 位内核的 Windows 版本的时代的遗留物。 16 位版本只有极少的宽字符支持,因此 Microsoft 努力允许编译单个源代码库以使用窄字符(针对 16 位内核)或宽字符(针对 32 位内核)内核)。 16 位内核已经消失了足够长的时间,几乎没有人真正有足够的理由再支持它们。

就其值(value)而言:wsprintf 几乎完全是一个历史遗迹。 w 显然代表 Windows。它作为 Windows 的一部分包含在内(回到 16 位时代)。它是在不支持浮点的情况下编写的,因为当时 Windows 内部不使用任何浮点——这就是为什么它有像 MulDiv 这样的例程的部分原因。内置,即使对浮点做(大致)相同的事情也很简单。

关于c++ - 我应该使用 wsprintf() 将 double 打印为宽字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com