寬字節轉多字節,多字節轉寬字節

寬字節轉多字節

WideCharToMultiByte

string W2AString(const wchar_t * str)
{ 

    string re="";
    int num = WideCharToMultiByte(
        CP_ACP,     //    轉換的格式
        0,             //    默認轉換方式
        str,        //    輸入字節
        -1,         //    字符串大小
        0,             //    輸出地址
        0,            //    輸出空間大小
        0,            //    失敗默認替換
        false );

    if (num<=0) return re;
    char *data = new char[num+1];  // +1,保留\0
    data[0]=0;
    num = WideCharToMultiByte(
        CP_ACP,     //    轉換的格式
        0,             //    默認轉換方式
        str,        //    輸入字節
        -1,         //    字符串大小
        data,     //    輸出地址
        num            //    輸出空間大小
        0,            //    失敗默認替換
        false);

    if (num>0)
    re = data;
    delete data;
    return re;
}

多字節轉寬字節

MultiByteToWideChar
char *str = " 多字節轉寬字節";

wstring A2WString(char* str)
{
    CString re;
    int num = MultiByteToWideChar(
        CP_ACP, 	//	轉換的格式
        0, 			//	默認轉換方式
        str,		//	輸入字節
        -1, 		//	字符串大小
        0, 			//	輸出地址
        0			//	輸出空間大小
        );

    wstring re = L"";
	if (num<=0) 
		return re;
    //	申請空間
    wchar_t *outStr = new wchar_t[num+1];//+1 保留\0

    num = MultiByteToWideChar(
        CP_ACP, 	//	轉換的格式
        0, 			//	默認轉換方式
        str,		//	輸入字節
        -1, 		//	字符串大小
        outStr, 			//	輸出地址
        num			//	輸出空間大小
        );

 	if (num>0)
		re = outStr;
	delete outStr;
	return re;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章