wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString....转换

wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString.... #include // 使用CString必须使用MFC,并且不可包含 #define _AFXDLL #include using namespace std; //---------------------------------------------------------------------------------- //将 单字节char* 转换为 宽字节 wchar* inline wchar_t* AnsiToUnicode( const char* szStr ) { int nLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0 ); if (nLen == 0) { return NULL; } wchar_t* pResult = new wchar_t[nLen]; MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen ); return pResult; } //---------------------------------------------------------------------------------- // 将 宽字节wchar_t* 转换 单字节char* inline char* UnicodeToAnsi( const wchar_t* szStr ) { int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL ); if (nLen == 0) { return NULL; } char* pResult = new char[nLen]; WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL ); return pResult; } //---------------------------------------------------------------------------------- // 将单字符 string 转换为宽字符 wstring inline void Ascii2WideString( const std::string& szStr, std::wstring& wszStr ) { int nLength = MultiByteToWideChar( CP_ACP, 0, szStr.c_str(), -1, NULL, NULL ); wszStr.resize(nLength); LPWSTR lpwszStr = new wchar_t[nLength]; MultiByteToWideChar( CP_ACP, 0, szStr.c_str(), -1, lpwszStr, nLength ); wszStr = lpwszStr; delete [] lpwszStr; } //---------------------------------------------------------------------------------- int _tmain(int argc, _TCHAR* argv[]) { char* pChar = "我喜欢char"; wchar_t* pWideChar = L"我讨厌wchar_t"; wchar_t tagWideCharList[100] ; char ch = 'A'; char tagChar[100] = {NULL}; CString cStr; std::string str; // 注:设置语言环境以便输出WideChar setlocale(LC_ALL,"chs"); // 注: char* 转换 wchar_t* // 注: wchar_t 未重载 << ,所以不可使用 cout << 输出 pWideChar = AnsiToUnicode( pChar ); // 注:printf("%ls") 和 wprintf(L"%s") 一致 printf( "%ls/n", pWideChar ); // 注:wchar_t* 转换 wchar_t[] wcscpy ( tagWideCharList, pWideChar ); wprintf( L"%s/n", tagWideCharList ); // 注:wchar_t[] 转换 wchar_t* pWideChar = tagWideCharList; wprintf( L"%s/n", pWideChar ); // 注:char 转换 string str.insert( str.begin(), ch ); cout << str << endl; // 注:wchar_t* 转换 string pWideChar = new wchar_t[str.length()]; swprintf( pWideChar, L"%s", str.c_str()); wprintf( L"%s/n", pWideChar ); // 注:string 转换 char* pChar = const_cast (str.c_str()); cout << pChar << endl; // 注:char* 转换 string str = std::string(pChar); // 注: cout 的 << 重载了string, 若printf 的话必须 printf("%s", str.c_str()); // 而不可 print( "%s", str ); 因为 str 是个 string 类 cout << str << endl; // 注:string 转换 char[] str = "无聊啊无聊"; strcpy( tagChar, str.c_str() ); printf( "%s/n", tagChar ); // 注:string 转换 CString; cStr = str.c_str(); // 注:CString 转换 string str = string(cStr.GetBuffer(cStr.GetLength())); // 注:char* 转换 CString cStr = pChar; // 注:CString 转换 char* pChar = cStr.GetBuffer( cStr.GetLength() ); // 注:CString 转换 char[] strncpy( tagChar, (LPCTSTR)CString, sizeof(tagChar)); // 注:CString 转换 wchar_t* pWideChar = cStr.AllocSysString(); printf( "%ls/n", pWideChar ); } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ecjtuync/archive/2008/11/15/3306364.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值