解決 CodeLite 中文亂碼的問題,並支持C++11特性



1. 安裝 MinGW Distro (GNU GCC) 或 TDM-GCCClang


2. 安裝 CodeLite

3. 運行並配置 CodeLite
CodeLite10

CodeLite20


4. 漢化 CodeLite
下載中文語言包https://github.com/eranif/codelite/tree/master/translations,中文語言包解壓后得到zh_CN文件夾,文件夾包含codelite.mo和codelite.po兩個文件,將文件夾zh_CN直接復制到CodeLite安裝目錄下locale文件夾內。
打開CodeLite軟件,從菜單【Settings -> Preferences】,選擇【Misc -> Encoding Locale】,修改 Locale to use 的值為 zh_CN:Chinese(Simplified) 。
CodeLite30

CodeLite40

CodeLite50


5. 支持處理中文
從菜單【設置 -> 構建設置】進入構建設置頁面,選擇【編譯器 -> MinGW -> 開關】,修改 Debug 和 Source 的值,在其原值的后面加上 -fexec-charset=GBK -finput-charset=UTF-8,然后點【應用】。
CodeLite60
注意一點,步驟4中【文件字體編碼】的設置和【-finput-charset】等號后的值應該是相同的,都設置為UTF-8或者GBK(WINDOWS-936),【文件字體編碼】指定源代碼文件(.c, .h)的編碼編碼方式,【-finput-charset】則用於告訴GCC編譯器源代碼文件的編碼方式。【-fexec-charset】用於告訴 GCC 編譯器處理字符串時采用的編號方式,因為是Windows系統所以選擇GBK,如果是Linux系統可以選擇UTF-8。

CodeLite65

6. 支持C++11
在【設置 -> 構建設置 -> 編譯器 -> MinGW】的右側將【工具 -> C++編譯器】改成 gcc -std=c++14。
(英文版:Setting -> Build Setting -> Tools -> 將 C++ Compiler name 改成 gcc -std=c++14 )

CodeLite70

CodeLite75

7. 測試代碼

#include <iostream>
#include <iomanip>      // std::setw
#include <vector>

// 一維數組 輸出 楊輝三角形
int main()
{
    using std::cout;
    using std::endl;
    using std::setw;
    using std::vector;

    constexpr size_t Line = 16;
    constexpr unsigned W = 5;

    size_t i, j;
    int n[Line+1];

    cout << "\t\tPascal 三角形\n" << endl;

    cout << setw(W) << (n[1] = 1) << endl;
    for (i = 2; i != Line+1; ++i)
    {
        cout << setw(W) << (n[i] = 1);
        for (j = i-1; j != 1; --j)
            cout << setw(W) << (n[j] += n[j-1]);
        cout << setw(W) << n[1] << endl;
    }
    cout << endl << endl;

    using std::begin;
    using std::end;
    cout << setw(W) << (n[1] = 1) << endl;
    for (int *pl = begin(n)+2; pl != end(n); ++pl)
    {
        cout << setw(W) << (*pl = 1);
        for (int *pr = pl-1; pr != begin(n)+1; --pr)
            cout << setw(W) << (*pr += *(pr-1));
        cout << setw(W) << n[1] << endl;
    }
    cout << endl << endl;

    int nn[Line] = {0}, t;
    bool beg = true;
    for (auto ll : nn)
    {
        beg = true;
        for (auto &mm : nn)
            if (beg && mm == 1)
            {
                cout << setw(W) << (t = mm = 1);
                beg = false;
            }
            else if (mm == 0)
            {
                cout << setw(W) << (mm = 1) << endl;
                break;
            }
            else
            {
                cout << setw(W) << (mm += t);
                t = mm-t;
            }
    }
    cout << endl << endl;


    vector<unsigned> v(Line, 0);

    cout << setw(W) << (v[0] = 1) << endl;
    for (i = 1; i != Line; ++i)
    {
        cout << setw(W) << (v[i] = 1);
        for (j = i-1; j != 0; --j)
            cout << setw(W) << (v[j] += v[j-1]);
        cout << setw(W) << v[0] << endl;
    }
    cout << endl << endl;

    for (auto &ll : v)
    {
        ll = 0;
        beg = true;
        for (auto &mm : v)
            if (beg && mm == 1)
            {
                cout << setw(W) << (t = mm = 1);
                beg = false;
            }
            else if (mm == 0)
            {
                cout << setw(W) << (mm = 1) << endl;
                break;
            }
            else
            {
                cout << setw(W) << (mm += t);
                t = mm-t;
            }
    }
    cout << endl << endl;

    cout << setw(W) << (v[0] = 1) << endl;
    for (vector<unsigned>::iterator it = v.begin()+1; it != v.end(); ++it)
    {
        cout << setw(W) << (*it = 1);
        for (vector<unsigned>::reverse_iterator rit(it); rit != v.rend()-1; ++rit)
            cout << setw(W) << (*rit += *(rit+1));
        cout << setw(W) << *(v.cbegin()) << endl;
    }
    cout << endl << endl;

    return 0;
}

CodeLite80



參考:
https://my.oschina.net/myshow/blog/194971
http://www.itdadao.com/articles/c15a418358p0.html



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM