怎么把 wchar_t name1[5] 賦值給 char name[5],求解答。
uj5u.com熱心網友回復:
可以允許資訊丟失嗎?可以不話,for回圈強行轉換賦值就可以了;不可以的話,你要自己想個協議做壓縮演算法,否則chat[5]存不下wchar_t[5],除非wchat_t的size和char一樣,你可以用sizeof(wchar_t)確認一下uj5u.com熱心網友回復:
如果是英文還好uj5u.com熱心網友回復:
#include <stdio.h>#include <stdlib.h>
#define BUFFER_SIZE 50
int main()
{
size_t ret;
char *MB = (char *)malloc( BUFFER_SIZE );
wchar_t *WC = L"http://www.w3cschool.cc";
/* 轉換寬字符字串 */
ret = wcstombs(MB, WC, BUFFER_SIZE);
printf("要轉換的字符數 = %u\n", ret);
printf("多位元組字符 = %s\n\n", MB);
return(0);
}
uj5u.com熱心網友回復:
就是英文,我試試大佬的方法uj5u.com熱心網友回復:
//Unicode轉ACSII
string UnicodeToAcsii(const wstring& unicode_string)
{
string acsii_string;
//CP_OEMCP - default to OEM code page
int len = WideCharToMultiByte(CP_OEMCP, 0, unicode_string.c_str(), -1, NULL, 0, NULL, NULL);
if (ERROR_NO_UNICODE_TRANSLATION == len || 0 == len)
{
//return empty wstring
return acsii_string;
}
vector<char> vec_result(len);
int result_len = WideCharToMultiByte(CP_OEMCP, 0, unicode_string.c_str(), -1, &vec_result[0], len, NULL, NULL);;
if (result_len != len)
{
//return empty wstring
return acsii_string;
}
acsii_string = string(&vec_result[0]);
return acsii_string;
}
//ACSII轉Unicode
wstring AcsiiToUnicode(const string& acsii_string)
{
wstring unicode_string;
//CP_ACP - default to ANSI code page
int len = MultiByteToWideChar(CP_ACP, 0, acsii_string.c_str(), -1, NULL, 0);
if (ERROR_NO_UNICODE_TRANSLATION == len || 0 == len)
{
//return empty wstring
return unicode_string;
}
vector<wchar_t> vec_result(len);
int result_len = MultiByteToWideChar(CP_ACP, 0, acsii_string.c_str(), -1, &vec_result[0], len);
if (result_len != len)
{
//return empty wstring
return unicode_string;
}
unicode_string = wstring(&vec_result[0]);
return unicode_string;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/45966.html
標籤:C++ 語言
