Sirius' blog Sirius' blog
首页
  • 学习笔记

    • 《C++》
    • 《MATLAB》
    • 《Python》
  • 学习笔记

    • 《Git》
    • 《CMake》
  • 技术文档
  • 博客搭建
  • 学习
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Sirius0v0

怕什么真理无穷,进一寸有一寸的欢喜
首页
  • 学习笔记

    • 《C++》
    • 《MATLAB》
    • 《Python》
  • 学习笔记

    • 《Git》
    • 《CMake》
  • 技术文档
  • 博客搭建
  • 学习
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 基础

    • 程序的内存模型
    • CC++指针
    • CC++引用
    • CC++类与对象
    • CC++运算符重载
    • CC++继承
    • CC++多态
    • CC++文件操作
  • Cpp小记
  • C++学习笔记-220705-V1
  • 进阶

  • 奇思妙用

  • 库的使用

  • 《C++》学习笔记
Sirius0v0
2022-04-29

C++学习笔记-220705-V1

# Cpp杂货铺

  1. 头文件climits/limits.h中包含了关于整型限制的信息,下表给出了climits中的一些符号常量:

    符号常量 表示
    CHAR_BIT char的位数
    CHAR_MAX char的最大值
    CHAR_MIN char的最小值
    SCHAR_MAX signed char的最大值
    SCHAR_MIN signed char的最小值
    UCHAR_MAX unsigned char的最大值
    SHRT_MAX short的最大值
    SHRT_MIN short的最小值
    USHRT_MAX unsigned short的最大值
    INT_MAX int的最大值
    INT_MIN int的最小值
    UINT_MAX unsigned int的最大值
    LONG_MAX long的最大值
    LONG_MIN long的最小值
    ULONG_MAX unsigned long的最大值
    LLONG_MAX long long的最大值
    LLONG_MIN long long的最小值
    ULLONG_MAX unsigned long long的最大值
  2. cout.put(char)显示一个字符;

  3. wchar_t类型,是一种 整数类型。cin/cout处理的是char流,不适于用来处理wchar_t类型,iostream头文件提供了wcin/wcout用于处理wchar_t流;另外,加上前缀L来指示宽字符常量和宽字符串。

    wchar_t bob = L'P';
    wcout << L"tall" << endl;
    
  4. C++11新增类型:char16_t、char32_t;

    前者长16位,用u前缀表示字符常量和字符串常量:u'C'和u"be good";

    后者长32位,用U前缀表示字符常量和字符串常量:U'R'和U"dirty rat".

  5. 更好的常量定义方法:const type name = value;;

    其他的常量定义方法:#define name value。但const比#define好首先在于他可以指明类型,其次可以使用作用域规则将定义限制在特定的函数或文件中,最后可以将const用于更复杂的类型(数组,结构等)。

  6. cout.setf()的作用是通过设置格式标志来控制输出形式

    boolalpha 可以使用单词”true”和”false”进行输入/输出的布尔值. oct 用八进制格式显示数值. dec 用十进制格式显示数值. hex 用十六进制格式显示数值. left 输出调整为左对齐. right 输出调整为右对齐. scientific 用科学记数法显示浮点数. fixed 用正常的记数方法显示浮点数(与科学计数法相对应). showbase 输出时显示所有数值的基数. showpoint 显示小数点和额外的零,即使不需要. showpos 在非负数值前面显示”+(正号)”. skipws 当从一个流进行读取时,跳过空白字符(spaces, tabs, newlines). unitbuf 在每次插入以后,清空缓冲区. internal 将填充字符回到符号和数值之间. uppercase 以大写的形式显示科学记数法中的”e”和十六进制格式的”x”.

  7. auto关键字,自动推断类型,自动但很少用。

  8. 有时候字符串很长,可以将两个用引号括起来的字符串合并为一个,即任何两个由空白分隔的 字符串常量 都将自动拼接为一个。

  9. 面向行的输入:cin.getline()和cin.get():

    • cin.getline(name,size)通过换行符确定结尾,不保存换行符。

    • cin.get(name,size)读取到行尾,但是 保留换行符 ,意味着如下调用会出错(因为第二次调用时看到的是换行符,不能读取任何内容)

      cin.get(name,arSize);
      cin.get(dessert,arSize);	// a problem
      
    • cin.get()不带任何参数读取下一个字符(包括换行符)

    • cin.getline()、cin.get()返回cin对象,即可以链式调用

      cin.get(name,ArSize).get()
      
    • 当get()读取空行或者getline()读取的字符串长度比分配的空间长时,会设置失效位,使得后续输入将被阻断,可使用cin.clear()恢复输入;

    • 对于string类型字符串读取行时使用getline(cin, name).

  10. C++11新增原始字符串类型:R"(raw string)",其中"(和)"是原始字符串的默认定界符,自定义定界符可在默认定界符之间添加任意数量的基本字符( 空格、左右括号、斜杠、控制字符 除外),例如下述程序中的R"=**( )=**";除此之外前缀R可与其他字符串前缀结合使用,位置前后没有要求。

    #include<iostream>
    #include<string>
    
    int main()
    {
        using namespace std;
        string str1 = R"(let i = \n " " )";
        char str2[] = R"=**(R"(example)")=**";
        wchar_t str3[] = LR"(""""")";
        char16_t str4[] = uR"(sni"\n)";
        return 0;
    }
    
  11. 4.4.6节不理解;

  12. 对于下述代码

    const char * bird = "wren";
    

    "wren"实际表示的是字符串地址,此语句是将"wren"的地址赋值给了bird指针,并且,字符串字面值是常量,所以要声明关键字const.

  13. 显示字符串数组地址需要将指针类型由char *转换为int * ;

  14. 模板类vector和array

    vector<typeName> vt(n_elem);
    array<typeName, n_elem> arr;
    

    注意的是,vector中的n_elem可以是变量,而array中的n_elem不能是变量;

    其次,vector元素个数可变,但是相比数组效率低,array元素个数不可变,效率与数组一样,但比数组更加安全。

  15. 基于范围的for循环(C++11)

    double prices[3] = {4.99, 10.99, 6.87};
    for(double x : prices)
        cout << x << endl;
    

    若要修改数组元素

    double prices[3] = {4.99, 10.99, 6.87};
    for(double &x : prices)
        cout << x << endl;
    
  16. 头文件<cctype>中包含了一些字符检查相关的函数,总结如下:

    函数名称 功能
    isalnum() 判断是否为字母或数字
    isalpha() 判断是否为字母
    iscntrl() 判断是否为控制字符
    isdigit() 判断是否为数字
    isgraph() 判断是否为除空格之外的打印字符
    islower() 判断是否为小写字母
    isprint() 判断是否为打印字符(包括空格)
    ispunct() 判断是否为标点符号
    isspace() 判断是否为标准空白字符
    isupper() 判断是否为大写字母
    isxdigit() 判断是否为十六进制数字
    tolower() 返回小写字母
    toupper() 返回大写字母
编辑 (opens new window)
#Cpp
上次更新: 2023/08/09, 13:21:24
Cpp小记
CC++模板

← Cpp小记 CC++模板→

最近更新
01
ipopt优化库配置及使用
07-21
02
ubuntu离线安装包的方法
07-21
03
其它控件的使用
03-05
更多文章>
Theme by Vdoing | Copyright © 2020-2024 Sirius0v0 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式