• C++ 学习之路(待更新)


    1、 C++命名规则

    (1)文件命名

    文件命名全部小写,以下划线_分割。

    (2)变量命名

    变量名由作用域前缀+类型前缀+一个或多个单词组成,每个单词的首字母要大写。对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, k, x, y, z。

    作用域前缀说明
    m_类的成员变量(member)
    sm_类的静态成员变量(staticmember)
    s_静态变量(static)
    g_外部全局变量(global)
    sg_静态全局变量(static global)
    gg_进程间共享的共享数据全局变量(globalglobal)
    作用域前缀说明
    n整型和位域变量(number)
    e枚举型变量(enumeration)
    c字符型变量(char)
    b布尔型变量(bool)
    f浮点型变量(float)
    p指针型变量(pointer)
    pfm指向函数的指针变量和函数对象指针
    g数组(grid)
    i类的实例(instance)

    举例说明:
    int nAge;//整型局部变量,表示年龄
    int m_nAge;//整型类成员变量,表示年龄
    int nMaxWidth;//整形局部变量,表示最大的宽度

    (3)常量命名

    常量名由类型前缀+全大写字母组成,单词间通过下划线_来界定,如:const int nMAX_WIDTH=12;

    (4)函数命名

    函数的名称由一个或多个单词组成。为便于界定,每个单词的首字母要大写。
    1、公共成员函数
    函数名应当使用"动词"或者"动词+名词"的形式。例如:
    GetName()
    SetValue()
    Reserve()
    2、保护成员函数
    保护成员函数的开头应当加上一个下划线“_”以示区别,例如:_GetName()
    3、私有成员函数
    私有成员函数的开头应当加上两个下划线“__”,例如:__SetValue()
    4、虚方法
    虚函数习惯以“Do”开头,例如:
    DoRefresh()//虚方法,公共成员函数
    _DoEncryption()//虚方法,保护成员函数
    5、回调和事件处理函数
    回调和事件处理函数习惯以单词“On”开头。例如:
    _OnTimer()//虚方法,保护成员函数
    OnExit()//虚方法,公共成员函数

    (5)数据类型命名

    类名、结构体名、枚举、类型定义typedef等以大写字母开头,每个单词字母均大写,不包含下划线。例如:
    class Student;
    struct FootballPlayer;
    enum EStudentType;

    (6)宏变量命名

    全大写加下划线,例如:define PI_ROUND 3.0

    2、C++读取文本文件(包含中文)

    C++读取文本文件,最大难点就是按编码格式进行读取文本中的汉字,正常getline()函数去读的话,基本全是乱码。下面这段代码可以读取任何文本文件的内容,包括汉字。代码如下:

    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main()
    {
        // Write file in UTF-8
        std::wofstream wof;
        wof.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8));
        wof.open(L"example.txt");
        wof << L"This is a test.\n";
        wof << L"Ìðïñþ íá ãñÜøù åëëçíéêïýò ÷áñáêôÞñåò\n";
        wof << L"Áêüìá ìéá äïêéìÞ;;!!11?1\n";
        wof << L"汉字测试\n";
        wof.close();
    
        // Read file in UTF-8
        std::ifstream f("example.txt");//输入文本路径
        std::wbuffer_convert> conv(f.rdbuf());
        std::wistream wf(&conv);
    
    #ifdef _WIN32
        _setmode(_fileno(stdout), _O_WTEXT);
    #else
        std::setlocale(LC_ALL, "");
    #endif 
        std::wstring line;
        while (getline(wf, line))
            std::wcout << line << std::endl;//输出结果
    
        system("pause");
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    【MicroPython ESP32】1.8“tft ST7735驱动3Dcube图形显示示例
    青翼科技-国产化ARM系列TES720D-KIT
    Replication(下):事务,一致性与共识
    JAVA计算机毕业设计中医保健网站Mybatis+系统+数据库+调试部署
    TPU-MLIR——实现Chatglm2-6B大模型移植部署
    1.3 Apache Hadoop的重要组成-hadoop-最全最完整的保姆级的java大数据学习资料
    Vue:第一个Vue程序和vue-router路由
    springboot
    什么是渗透测试
    VR、AR、MR、XR到底都是什么?有什么区别
  • 原文地址:https://blog.csdn.net/HXX904/article/details/133635076