wsprintf()函数能处理浮点数了吗?相同功能的API和C函数哪个更高效?
VS2005 C++下API编程,如果字符集定为UNICODE,wsprintf()函数就不能把浮点数转换为字符串,我试了几十次,怎么写转换图式字符串都不行,《WINDOWS编程第五版》也说它不能处理浮点数,我只好自己编写个函数去处理它,但感觉这个函数比较繁,不知道还有没有新的API函数可用,有劳大侠们指点则个!谢谢。
另一个问题是:我看到C函数和API函数中有些具有相同的功能,又如这个wsprintf()和itoa(),都能把整数转换为字符串,像这样有相同功能的函数,在API编程中选择哪个,效率更高呢?它们两个哪个更底层?谢谢。
[解决办法]
对于多字节编码方式,用以下程序就可以
#include <stdio.h>int main(){ double x=1.23; wchar_t buff[20]; swprintf(buff,L"%lf",x); printf("%ls\n",buff);}
[解决办法]
既然你使用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。