代碼:
#include<stdio.h>
#include<wchar.h>
#include<stdlib.h>
#include<locale.h>
#include<string.h>
int main(){
setlocale(LC_ALL,"");
wchar_t wstr[100];
char str[100];
strcpy(str,"中文測驗");
printf("strlen:%I64d\n",strlen(str));
size_t len;
mbstowcs_s(&len,wstr,99,str,strlen(str));
if(len<=0){
perror("error");
}else{
wprintf(L"長度:%ld,轉換:%ls\n",len,wstr);
return 0;
}
}
編譯平臺:win10 mingw-w64
執行(非編譯)時會出現亂碼或者錯誤,但如果我在編譯時加上引數-fexec-charset=GBK就正常了,這是怎么回事?

我不想讓軟體局限于處理中文啊
uj5u.com熱心網友回復:
MultiByteToWideCharuj5u.com熱心網友回復:
我想開發跨平臺的軟體
uj5u.com熱心網友回復:
c++11提供了寬位元組庫,建議研究一下。uj5u.com熱心網友回復:
個人感覺 C 語言自帶的轉換函式很雞肋,如果要做轉換的話可以呼叫 iconv 庫,或者自己寫轉換代碼。附注:printf 和 wprintf 不可以一起呼叫,這是未定義行為。
uj5u.com熱心網友回復:
跨平臺用iconv 吧。 我反正沒跨過。一直用win32api 或mfc A2W 簡單的一批
uj5u.com熱心網友回復:
iconv不是局限于linux嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137636.html
標籤:C語言
