首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-12 
wsprintf()函数能处理浮点数了吗?相同功能的API和C函数哪个更高效?VS2005 C++下API编程,如果字符集定为UNI

wsprintf()函数能处理浮点数了吗?相同功能的API和C函数哪个更高效?
VS2005 C++下API编程,如果字符集定为UNICODE,wsprintf()函数就不能把浮点数转换为字符串,我试了几十次,怎么写转换图式字符串都不行,《WINDOWS编程第五版》也说它不能处理浮点数,我只好自己编写个函数去处理它,但感觉这个函数比较繁,不知道还有没有新的API函数可用,有劳大侠们指点则个!谢谢。

另一个问题是:我看到C函数和API函数中有些具有相同的功能,又如这个wsprintf()和itoa(),都能把整数转换为字符串,像这样有相同功能的函数,在API编程中选择哪个,效率更高呢?它们两个哪个更底层?谢谢。


[解决办法]
对于多字节编码方式,用以下程序就可以

C/C++ code
#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。

热点排行