一个类型转换的小问题

心心属于你 2018-05-21 11:22:36
一个类型转换问题,因为网络上必须要在Unicode下来进行,刚才小白找了下网上转换的,发现能在VS2017下的寥寥无几,




...全文
1113 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-05-23
  • 打赏
  • 举报
回复
千句解释说明,比不上一行能编译运行的例子代码。
走好每一步 2018-05-23
  • 打赏
  • 举报
回复
A2W、W2A、A2T、T2A、(USES_CONVERSION) 了解一下
JamesWu9527 2018-05-21
  • 打赏
  • 举报
回复
之前看到一段代码是这样处理的,给你分享一下

ANSI to Unicode
wstring ANSIToUnicode( const string& str )
{
 int  len = 0;
 len = str.length();
 int  unicodeLen = ::MultiByteToWideChar( CP_ACP,
            0,
            str.c_str(),
            -1,
            NULL,
            0 );  
 wchar_t *  pUnicode;  
 pUnicode = new  wchar_t[unicodeLen+1];  
 memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));  
 ::MultiByteToWideChar( CP_ACP,
         0,
         str.c_str(),
         -1,
         (LPWSTR)pUnicode,
         unicodeLen );  
 wstring  rt;  
 rt = ( wchar_t* )pUnicode;
 delete  pUnicode; 
 
 return  rt;  
}
zgl7903 2018-05-21
  • 打赏
  • 举报
回复
使用 _tcscpy_s 替换 strcpy
worldy 2018-05-21
  • 打赏
  • 举报
回复
使用MultiByteToWideChar转换为Unicode
赵4老师 2018-05-21
  • 打赏
  • 举报
回复
仅供参考:
#include <afxpriv.h>
#include <stdio.h>
char str[3]="汉";
wchar_t ws[2];
int main() {
    USES_CONVERSION;
    swprintf(ws,L"%s",A2W(str));
    printf("%04hX\n",(unsigned short)ws[0]);
    return 0;
}
//6C49
//
Eleven 2018-05-21
  • 打赏
  • 举报
回复
#include <tchar.h> #include <strsafe.h> _tcscpy_s(); StringCchPrintf();
一枪尽骚丶魂 2018-05-21
  • 打赏
  • 举报
回复
这个问题确实遇到过,也是在处理网络数据的时候遇到的。
一枪尽骚丶魂 2018-05-21
  • 打赏
  • 举报
回复
你可以参考下,看是否符合你的要求
一枪尽骚丶魂 2018-05-21
  • 打赏
  • 举报
回复

wchar_t* toUTF8(CString& str){

	//char * pStr = (LPCSTR)(str.GetBuffer(str.GetLength()));; //取得str对象的原始字符串
	//_CrtMemState s1, s2, s3;
	//_CrtMemCheckpoint(&s1);
	int nBufferSize = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(str.GetBuffer(str.GetLength())), -1, NULL, 0); //取得所需缓存的多少
	wchar_t *pBuffer = (wchar_t*)malloc(nBufferSize * sizeof(wchar_t));//申请缓存空间
	//_CrtMemCheckpoint(&s2);
	//if(_CrtMemDifference(&s3, &s1, &s2))
	//	_CrtMemDumpStatistics(&s3);
	MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(str.GetBuffer(str.GetLength())), -1 , pBuffer, nBufferSize*sizeof(wchar_t));//转码
	//MessageBoxW(NULL, pBuffer, L"Text", MB_OK); //显示
	//free(pBuffer); //释放缓存
	return pBuffer;
}
smwhotjay 2018-05-21
  • 打赏
  • 举报
回复
A2W

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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