捣腾好几天啦
提问之前我已经看过原先的文章,可是都不能很好的解决我的问题
ANSII,UNICODE,UTF-8关于这三种类型的转换,最好给个实例?
我用widechartomultibyte(),he和multibytetowidechar()函数
时,我已有的数据类型是CString(UNICODE),而这两个函数
要求是LPCSTR,和LPCWSTR格式,还有我最终要求是
把UNICODE CString转换UTF-8格式的LPCTSTR 数据如何转换?
实在搞不懂那么多参数的意思
麻烦给个例子说明一下。
麻烦那位大侠讲解一下char*,LPSTR,LPCTSTR,LPCWSTR,CString,
string之间的类型转换,最好给出例子说明。
本人比较笨,麻烦大家了
非常感谢分不够我可以在加
提问之前我已经看过原先的文章,可是都不能很好的解决我的问题
ANSII,UNICODE,UTF-8关于这三种类型的转换,最好给个实例?
我用widechartomultibyte(),he和multibytetowidechar()函数
时,我已有的数据类型是CString(UNICODE),而这两个函数
要求是LPCSTR,和LPCWSTR格式,还有我最终要求是
把UNICODE CString转换UTF-8格式的LPCTSTR 数据如何转换?
实在搞不懂那么多参数的意思
麻烦给个例子说明一下。
麻烦那位大侠讲解一下char*,LPSTR,LPCTSTR,LPCWSTR,CString,
string之间的类型转换,最好给出例子说明。
本人比较笨,麻烦大家了
非常感谢分不够我可以在加
格式为_MBCS格式的话_T(),是没有意义的!
LPSTR = char *
中间+T代表TCHAR, + W代表WCHAR + C代表const
CString可以通过赋值,初始化等方法转换
string可以通过string.c_str()转换成LPTSTR,然后转换
只能够进行MBCS和UTF8或者Unicode之间转换。好像不可以把Unicode转成UTF8的。
这个要自己写函数。
typedef LPCSTR LPCTSTR;
typedef LPCWSTR LPCTSTR;
LPSTR
LPCSTR 指向一个以"NULL"结束的WINDOWS字符串常量的指针
LPCTSTR 指向一个以"NULL"结束的Unicode或Windows字符串常量的指针
LPCWSTR 指向一个以"NULL"结束的Unicode字符串常量的指针
TCHAR Unicode或Windows字符
WCHAR Unicode字符
通过查看WINNT.H文件,可以知道如果你设定的编码格式为UNICODE,那么
这些变量都是UNICODE类型,设置 为MBCS格式的,这些结构全是不定长的
字符串,关于转换
char *p,pp[256];//ANSII
WCHAR wp;// UNICODE
CString str("你好");
string strTemp("nih熬");
p = (LPSTR)(LPCTSTR)str;//CString-->char*,过程是typedef CONST CHAR *LPCTSTR
//先对str转换为const char*格式(LPCTSTR),然后LPSTR转换为char*格式,转换后
// 的p是不可修改的
p = strTemp.c_str();// srting ->char *使用string的内置转换函数
strcpy(pp,(LPSTR)(LPCTSTR)strCString); //CString---->char[],可以对pp进行修改
wp = pp;//这时就可以把pp转换为UNICODE编码格式
也许是我太懒,所以麻烦做过的人给个代码看看
TO:yhz(耗子)自己写了不太好使,所以麻烦做过的人给函数看看
但是感觉并没有把问题讲深(至少没有我要求的那个深度)
并且,一旦你用UNICODE编码,将会有许多函数无法使用
比如fstream file;
file.open();//写文件流的操作他只支持char *计ansi码格式
相这种问题如何避免,或者用其他方法替代,都没有说。现在只是遇到这个问题,正在学习中。。
谢谢各位,问题搞定后,会把自己的问题写出来,
以便大家共同学习
这位老兄得发表得大部分看法都是从<Windows核心编程>,第二章关于UNICODE
中抄写得!
算了.问题依然存在!
如果有人想讨论关于UNICODE编码得问题可以找我联系
[email protected]
结帖