wchar_t*,wchar_t,wchat_t数组,char,char*,char数组
来源:互联网 发布:淘宝价格后面厂家直销 编辑:程序博客网 时间:2024/05/18 16:55
wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString....
#include <string>
// 使用CString必须使用MFC,并且不可包含<windows.h>
#define _AFXDLL
#include <afx.h>
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<char*>(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 );
}
- [转载]wchar_t*,wchar_t,wchat_t数组,char,char*,char数组
- wchar_t*,wchar_t,wchat_t数组,char,char*,char数组
- 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 以及system("command")
- std::string,std::wstring,CString,char,char*,char数组,wchar_t*,wchar_t,wchat_t数组
- 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....转换
- wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CStrin
- 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....
- 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....相互之间的转化
- {wchar_t*, wchar_t, wchat_t数组},{char,char*,char数组},{std::string,std::wstring},CString之间的相互转换
- wchar_t char
- char wchar_t
- wchar_t <-> char
- char 转wchar_t 及wchar_t转char
- char 转wchar_t 及wchar_t转char
- 班扎古鲁白玛的沉默
- WPF打开操作Office文档的解决办法
- QT4模块三 《各数据类型间的转换》
- 指针数组、数组指针、指针函数、函数指针、函数指针数组解析
- 简单工厂模式
- wchar_t*,wchar_t,wchat_t数组,char,char*,char数组
- 先序中序建立二叉树的递归算法
- 解决Tomcat catalina.out 不断成长导致档案过大的问题
- HDU 1273 小希的迷宫
- 逆时针打印矩阵
- Asp.net 后台根据前台选择对话框执行后台不同的方法的总结与创新
- C# response.expires
- Python学习
- 拿什么补偿你,我失去的青春