C++ 中文unicode在終端機而且卡住解決方法

1.環境

使用 VS2017 測試,實際上只要有支援到 std:locale 的編譯器即可(基本上都有支援)

再來專案設置使用unicode開發

//project->General->Character Set = > “Use Unicode Character Set”

2. 程式碼

//main.cpp
#include <iostream>
using namespace std;

//project->General->Character Set = > "Use Unicode Character Set"

int main (int argc,char *argv[])
{
    locale::global(locale(""));
    wcout.imbue(locale(""));

    wcout << L"wcout << abcdefg" << endl;
    wcout << L"wcout << 測試中文:一二三四" << endl;

    //使用完畢時要呼叫下面兩行 ,才不會有 memory leak問題   <===重要
    locale::global(locale("C"));
    wcout.imbue(locale("C"));

    //===== 無使用 std::locale 會發生終端機打印時卡住
    wcout << L"wcout << abcdefg" << endl;
    wcout << L"wcout << 測試中文:一二三四" << endl;  //"測試中文:一二三四" can't printf

    int x; cin >> x;
    return 0;
}

3.Output

wcout << abcdefg
wcout << 測試中文:一二三四
wcout << abcdefg
wcout <<

4. Node

記得使用前呼叫

locale::global(locale(""));
wcout.imbue(locale(""));

使用後要再呼叫(不然會有 memory leak 發生哦)

locale::global(locale("C"));
wcout.imbue(locale("C"));

5.github 連結


 上一篇
Git clean 指令 Git clean 指令
檢查即將被移除的”已忽略檔案” (含資料夾內)git clean -nXdf 移除”已忽略檔案” (含資料夾內)git clean -Xdf
2018-02-21
下一篇 
Ubuntu加入新的帳戶 Ubuntu加入新的帳戶
原本目的:以前開 AWS 會拿到一組金鑰,但每次都用鑰匙 ssh 登入連線實在很不方便。 1.Ubuntu 加入新的帳戶 (tsaiyu
2018-02-13
  目錄