wsprintf()函数能处理浮点数了吗?相同功能的API和C函数哪个更高效?

千分散尽还复来 2011-11-30 10:53:26
VS2005 C++下API编程,如果字符集定为UNICODE,wsprintf()函数就不能把浮点数转换为字符串,我试了几十次,怎么写转换图式字符串都不行,《WINDOWS编程第五版》也说它不能处理浮点数,我只好自己编写个函数去处理它,但感觉这个函数比较繁,不知道还有没有新的API函数可用,有劳大侠们指点则个!谢谢。

另一个问题是:我看到C函数和API函数中有些具有相同的功能,又如这个wsprintf()和itoa(),都能把整数转换为字符串,像这样有相同功能的函数,在API编程中选择哪个,效率更高呢?它们两个哪个更底层?谢谢。
...全文
361 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
楚天乐 2011-12-14
  • 打赏
  • 举报
回复
既然你使用vc++了,为什么不考虑用CString,只要编译选项是UNICODE,那么CString就是UNICODE的。
CString有一个方法,format,我给你个例子吧

CString str;
float a = 0.06;
str.Format(_T("%2f"),a);

这样子就可以了。

至于楼上说的sprintf是C函数,wsprintf是windows API,这又有什么意义呢,windows内核都是UNICODE的,你上层如果使用ANSI字符串,那么你和系统交互的时候,系统会自动转换成UNICODE,这还多了一步转换呢。
比如说你使用CreateFile,如果你的路径是ANSI,那么系统在NTDLL位置,系统会把你的参数转换成UNICODE,然后调用CreateFileW。
柯本 2011-12-13
  • 打赏
  • 举报
回复
对于多字节编码方式,用以下程序就可以

#include <stdio.h>
int main()
{
double x=1.23;
wchar_t buff[20];
swprintf(buff,L"%lf",x);
printf("%ls\n",buff);
}

  • 打赏
  • 举报
回复
大侠们在把浮点数转换为宽字符时,是怎样做的?
追求执着 2011-12-13
  • 打赏
  • 举报
回复
疾似云流 2011-12-13
  • 打赏
  • 举报
回复
swprintf是正解。
wsprintf是Windows API函数,swprintf才是跟sprintf同一系列的CRT函数
luciferisnotsatan 2011-11-30
  • 打赏
  • 举报
回复
swprintf 这个才是C函数

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧