日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

multi-byte wide-char

發(fā)布時(shí)間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 multi-byte wide-char 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/** C++ 字符串的一點(diǎn)點(diǎn)轉(zhuǎn)換*/ #include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <clocale> //setlocale #include <Windows.h> #include <WinCon.h> using namespace std; //using namespace System; //需要CLR支持wchar_t* mbs2wcs(const char* mbstr) { wchar_t* wcstr = NULL;// Get the size of wchar_t after converted #ifdef WIN32 int size = MultiByteToWideChar(CP_UTF8, 0, mbstr, -1, NULL, 0); #else size_t size = mbstowcs(NULL, mbstr, 0); #endifwcstr = new wchar_t[size+1]; if (wcstr) { memset(wcstr, 0, size * sizeof(wchar_t)); #ifdef WIN32 int ret = MultiByteToWideChar(CP_UTF8, 0, mbstr, -1, wcstr, size); if (ret == 0) // MultiByteToWideChar returns 0 if it does not succeed. #else size_t ret = mbstowcs(wcstr, mbstr, size+1); if (ret == -1) #endif { delete[] wcstr; wcstr = NULL; } }return wcstr; }char* wcs2mbs(const wchar_t* wcstr) { char* mbstr = NULL;// Get the size of char after converted #ifdef WIN32 int size = WideCharToMultiByte(CP_UTF8, 0, wcstr, -1, NULL, 0, NULL, NULL); #else size_t size = wcstombs(NULL, wcstr, 0); #endifmbstr = new char[size+1]; if (mbstr) { memset(mbstr, 0, size * sizeof(char)); #ifdef WIN32 int ret = WideCharToMultiByte(CP_UTF8, 0, wcstr, -1, mbstr, size, NULL, NULL); if (ret == 0) // MultiByteToWideChar returns 0 if it does not succeed. #else size_t ret = wcstombs(mbstr, wcstr, size+1); if (ret == -1) #endif { delete[] mbstr; mbstr = NULL; } }return mbstr; }int main(int argc, char *argv[]){ setlocale(LC_ALL, "chs");//設(shè)置代碼頁,簡(jiǎn)體中文是936 SetConsoleOutputCP(936);cout<<"string convert..`\nchar *\nwchar_t\n`\n"<<endl;char *str = "long long ago, there is a girl, she\'s name is little redhat."; cout<<"\nchar *str :\n"<<str<<endl;//mbstowcs && wcstombs // Convert to a wchar_t*wchar_t *wstr; wstr = mbs2wcs(str); wcout<<"\nwchar_t *wstr : \n"<<wstr<<endl;cout<<"sizeof(*str): "<<sizeof(*str)<<" byte"<<endl; cout<<"sizeof(*wstr): "<<sizeof(*wstr)<<" byte"<<endl; //wstr指向第一個(gè)字符'l'占了16bit=2bytereturn 0; }

總結(jié)

以上是生活随笔為你收集整理的multi-byte wide-char的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。