• 《C++Primer Plus》 | 复合类型


    数组

    typeName arrayName[arraySize]

    1. 要求arraySize在编译是已知,不能是变量。
    2. 数组作为由基本类型组成的复合数据类型,arrayName要强调是对应基本数据类型组成的数组(特定数组)
    3. 通过下标或索引单独访问各个元素(可能引发数组越界的问题,int a[20],容易错误访问a[20])
    4. 数组可使用列表初始化,即C++11可省略=
    char ch[4]{'0','',65,'5'};
    65在char的范围内

    字符串

    char string[4]={'H','e','r',''};

    char string[]="Her";
    已空字符结尾的字符数组是字符串,C-风格字符串,第二种是隐式写法,会自动加''

    cout << "I am a student.
    ";
    cout <<"I am"   " a student.
    ";
    cout <<"I a"  "m a student.
    ";
    

    C++允许字符串的拼接,第一个字符串的隐式''会被第二个字符串的第一个字符代替
    cstring中含strlen()函数,字符数组的长度不能小于strlen()+1.
    cin>> name1
    cin>> name2
    cin已空格,制表符,换行符确定字符串结束,例如在name1是输入Bob Tom,Bob放到name1,Tom留在输入队列,无需在输入,cin会在输入队列中读取Bob
    cin.getline(stringname,num)
    以上为将键盘输入写入到stringname[num]的字符数组,num包含''
    getline()成员函数按行输入,遇到' '结束,舍弃换行符,get()不舍弃换行符,连续输入采用cin.get(s,num).get()的方式。

    cin.getline().getline() //可以看成连续两次调用getline
    cin.get().get()//cin.get()返回cin对象,这是一种拼接方式
    (cin>>year).get()//处理'
    '  year 为int
    cin.get(s,num)
    

    string类

    #include

    string str1;
    string str2;
    string str3;
    cin >> str1;//C++自动调整str1的长度
    st2r=str1;
    str1=str2+str3;
    

    #include

    strcpy(s1,s2)//copy s2 to s1
    strcat(s1,s2)//s1+=s2,即append s2 to s1
    s1.size()//结果与strlen()等价,但有.说明是对象.类方法(函数)
    

    vector&array模板

    #include <iostream>
    #include<vector>  //STL C++98 ,动态数组的替代品
    #include<array>  //C++11
    
    
    int main()
    {
    using namespace std;
    double a[4]={1.4,1.2,3.5,6.7};
    vector <double> b(4);//个数常量或变量
    b[0]=1.4;
    b[1]=1.2;
    b[2]=3.5;
    b[3]=6.7;
    array <double,4> c={1.4,1.2,3.5,6.7};
    array <double,4> d;//个数必为常量
    d=c;
    cout << "a[2]:" <<a[2]<<"is located at: "<< &a[2]<< endl;
    cout << "b[2]:" <<b[2]<<"is located at: "<< &b[2]<< endl;
    cout << "c[2]:" <<c[2]<<"is located at: "<< &c[2]<< endl;
    cout << "d[2]:" <<d[2]<<"is located at: "<< &d[2]<< endl;
    }
    
    

    vector对象在自由存储区或堆区,array对象,数组在栈区,array对象可以赋值给另一个对象,数组只能一个一个赋值

    new&delete

    int * pt=new int ;
    delete pt;//不能用delete 连续两次释放同一个内存块
    int *pn=new int [10];
    delete [] pn;
    

  • 相关阅读:
    温昱谈架构和框架(Framework)的区别
    温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
    怎么设计一个好的数据库
    ORACLE修改表空间方法
    为[ double ] 类型 添加[zzzzz]方法
    常用的html代码 加粗 加亮 字型加大 变色等
    ASP.NET页面级别的事务
    无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
    把漫画浏览器的离线下载的功能给实现了一下
    以前写的IE9鼠标手势插件在IE10下也能工作
  • 原文地址:https://www.cnblogs.com/zuoanfengxi/p/13338618.html
Copyright © 2020-2023  润新知