bcb6控制台輸出中文是沒有問題的,但是wcout輸出寬字元中文(wchar_t)是不正常的,但wprintf輸出是正常的。
在cb10中可以設定:
setlocale(lc_ctype, ""); //wprintf
wcout.imbue(locale("",lc_ctype)); //cb10 可行
但在cb6中是不行的,而cout輸出中文的是很正常的的,因此需將顯示的寬字元中文轉換為多字元中文即可。
如下**:
setlocale(lc_ctype, ""); //wprintf
"",lc_ctype)); //cb10 可行
wchar_t * wstr = l"最好的世界是永遠進不去的世界。"; // 定義寬字元陣列,注意 l 是大寫
int len = widechartomultibyte(cp_acp, 0, wstr, -1, null, 0, null, null);
char* str = new char[len + 1];
memset(str, 0, len + 1);
widechartomultibyte(cp_acp, 0, wstr, -1, str, len, null, null);
cout <
wprintf(l"wprintf輸出中文:%s\n",wstr);
另外多執行緒中的cout和printf也一定要注意執行緒同步,否則也會出現中文亂碼
控制台輸出中文亂碼問題
問題描述 cout 中文字元 在控制台輸出時出現亂碼。解決辦法 重新點出選單,選 預設值 項,發現 預設值 裡的 當前 頁 是可以設定,有兩個選項 437 oem 美國 和 936 ansi oem 簡體中文 gbk 將 當前 頁 設定為 936 ansi oem 簡體中文 gbk 點 確定 沒有發...
Vc 控制台輸出中文亂碼
vc 解決方案一 修改檔案的編碼 修改源 檔案的 編碼格式 使其和控制台的編碼格式保持一致.控制台的編碼格式預設是936 檔案的編碼格式,可以通過vs很方便的修改 先用vs開啟對應的檔案,然後如下操作 如果控制台的編碼和程式的編碼一致,還是有中文亂碼,就需要修改控制台的屬性,右擊控制台標題欄,選擇 ...
控制台輸出控制
by jingzhongrong 通過win32api提供的函式,可以對控制台程式的輸出進行控制,例如字型顏色 標題文字,以及各種屬性等等。主要使用到的函式以及宣告如下 handle getstdhandle dword nstdhandle 此函式用於獲取控制台輸出 輸入控制代碼。得到控制代碼之後...