<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
std::string UTF8_To_string(const std::string& str) { int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); wchar_t* pwBuf = new wchar_t[nwLen + 1]; //一定要加1,不然會出現尾巴 memset(pwBuf, 0, nwLen * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen); int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL); char* pBuf = new char[nLen + 1]; memset(pBuf, 0, nLen + 1); WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); std::string strRet = pBuf; delete[]pBuf; delete[]pwBuf; pBuf = NULL; pwBuf = NULL; return strRet; }
std::string string_To_UTF8(const std::string& str) { int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); wchar_t* pwBuf = new wchar_t[nwLen + 1]; //一定要加1,不然會出現尾巴 ZeroMemory(pwBuf, nwLen * 2 + 2); ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen); int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL); char* pBuf = new char[nLen + 1]; ZeroMemory(pBuf, nLen + 1); ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); std::string strRet(pBuf); delete[]pwBuf; delete[]pBuf; pwBuf = NULL; pBuf = NULL; return strRet; }
std::string wstring2string(std::wstring wstr) { string result; int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL); if (len <= 0)return result; char* buffer = new char[len + 1]; if (buffer == NULL)return result; WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL); buffer[len] = ' '; result.append(buffer); delete[] buffer; return result; }
std::wstring string2wstring(std::string str) { wstring result; int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0); if (len < 0)return result; wchar_t* buffer = new wchar_t[len + 1]; if (buffer == NULL)return result; MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len); buffer[len] = ' '; result.append(buffer); delete[] buffer; return result; }
// WideChar.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <windows.h> #include <iostream> #include <atlbase.h> //#include <comutil.h> #include <atlstr.h> using namespace std; //方法1:MultiByteToWideChar, WideCharToMultiByte void Way_1() { //char轉wchar_t char *p1 = "abc"; wchar_t p2[20] = L"EFG"; MultiByteToWideChar(CP_ACP, 0, p1, strlen(p1) + 1, p2, sizeof(p2)); printf("%Sn", p2); //wchar_t轉char wchar_t *p3= L"EFG"; char p4[20]; WideCharToMultiByte(CP_ACP, 0, p3, -1, p4, sizeof(p4), NULL, NULL); printf("%sn", p4); } //方法2:A2W, W2A, T2A, A2T void Way_2() { //需要新增標頭檔案 <atlbase.h> char * p1 = "abc"; wchar_t *p2 = L"def"; TCHAR *P3 = _T("CC"); USES_CONVERSION; wchar_t *p5 = A2W(p1); char * p4 = T2A(P3); } 方法3: //void Way_3() //{//需要新增標頭檔案<comutil.h>,一般在MFC工程下使用 // CString str = "abc";//只能存一種 // _bstr_t bstr = "abc";//可以用非unicode // bstr += L"efg";//可以用unicode // char *p = bstr; // wchar_t *p2 = bstr; //} int main() { Way_1(); //Way_2(); return 0; }
int Unicode2UTF8(const wchar_t* pUnicode, char* pUTF8Buffer, int nBufferSize) { if( (nBufferSize == 0) && (pUTF8Buffer != NULL) ) return 0; int result = WideCharToMultiByte(CP_UTF8, NULL, pUnicode, -1, pUTF8Buffer, nBufferSize, NULL, NULL); if ((result > 0) && (pUTF8Buffer != NULL)) pUTF8Buffer[result-1] = 0; return result; } int UTF82Unicode(const char* pUTF8, wchar_t* pUnicodeBuffer, int nBufferSize) { if( (nBufferSize == 0) && (pUnicodeBuffer != NULL) ) return 0; int result = MultiByteToWideChar(CP_UTF8, NULL, pUTF8, -1, pUnicodeBuffer, nBufferSize); if ((result > 0) && (pUnicodeBuffer != NULL)) pUnicodeBuffer[result-1] = 0; return result; } int Unicode2Ansi(const wchar_t* pUnicode, char* pAnsiBuffer, int nBufferSize) { if( (nBufferSize == 0) && (pAnsiBuffer != NULL) ) return 0; int result = ::WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, pAnsiBuffer, nBufferSize, NULL, NULL); if ((result > 0) && (pAnsiBuffer != NULL)) pAnsiBuffer[result-1] = 0; return result; } int Ansi2Unicode(const char* pAnsi, wchar_t* pUnicodeBuffer, int nBufferSize) { if( (nBufferSize == 0) && (pUnicodeBuffer != NULL) ) return 0; int result = ::MultiByteToWideChar(CP_ACP, 0, pAnsi, -1, pUnicodeBuffer, nBufferSize); if ((result > 0) && (pUnicodeBuffer != NULL)) pUnicodeBuffer[result-1] = 0; return result; }
簡單實用
CString strBuf; int nSize = Unicode2UTF8(strBuf, NULL, 0); char* szBuf = new char[nSize]; Unicode2UTF8(strBuf, szBuf, nSize);
以上就是C++實現字元格式相互轉換的範例程式碼的詳細內容,更多關於C++字元格式互換的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45