• 可变数据类型


    相等性运算符== !=字符串长度所包含字符全部同
    关系性运算
    < <= > >=
    把string对象和字符字面值及字符字面值混合在一条语句中使用,须确保每个加法运算符(+)的两侧的运算对象至少有一个是string
    不能把字面值直接相加
    编译器无法做到两个字面值的直接相加运算
    C++中字符串字面值并不是标准库类型string对象,字符串字面值与string是不同类型
    #include <iostream>
    
    using namespace std;
    
    //行读取
    int main(int argc,const char *argv[])
    {
      string line;  
      while(getline(cin,line))
    {
    cout << line << endl;
    }    
    }
    
    //单词
    int main()
    {
    string word;
    while(cin >> word)
    {
    cout << word << endl;
    }
    }
    
    //输出string.size > 20 的行
    int main()
    {
    string line;
    while(getline(cin,line))
    {
    if(line.size() > 20)
    {
    cout << line << endl;
    }
    
    }
    }
    
    //pass输入的空行
    int main()
    {
    string line;
    while(getline(cin,line))
    {
    if(!line.empty())
    {
    cout << line << endl;
    }
    }
    }
    string类的输入运算符>>
    输出运算符
    处理string对象中字符
    检查string对象是否包含Space,string对象中字母改成小写,查看特定字符是否出现
    cctype头文件中,定义了一组标准函数
    isalnum(c)
    litter number
    alphanumric
    字母数字True
    isalphanumeric
    isalnum
    isalpha(c) 参数  
    iscntrl()控制字符
    isdigit(c) 数字
    isgraph()
    #include <iostream>
    
    using namespace std;
    
    int main(int argc,const char *argv[])
    {
        char c;
        //Prompt Input#
        cout << "[Prompt input#] ";
        while(cin >> c)
        {
            if(isupper(c))
            {
                cout << "upper char c = " << c << endl;
                cout << "convert isupper to is lower: " <<char( tolower(c)) << endl;
    
            }
            else
            {
                cout << "lower char c = " << c << endl;
                cout << "convert to is upper: " << char(toupper(c)) << endl;
            }
        }
    }
    

      

    处理string对象每个字符,使用基于范围的for
    for(range for);
    遍历给定序列的每个元素并对序列每个值执行操作
    for(declaration:expression)
    statement;
    基于范围的for
    对string对象每个字符操作
    语句遍历给定序列每个元素并对序列每个值执行操作
    for(declaration:expression)
    expression对象表示序列
    declaration部分负责定义变量
    declaration部分负责定义变量 变量被用于访问序列中基础元素,每次迭代,declaration部分变量被初始化w欸expression部分的下一个元素
    string对象表示字符序列,string对象作为范围for语句expression 可以使用范围for语句把string对象字符每行一个输出
    

      

    declaration部分负责定义一个变量,变量用于访问序列基础元素 每次迭代 declaration部分的变量会被初始化为expression部分的下一个元素
    使用范围for语句改变字符串中的字符 改变string对象中字符,把循环变量定义成引用 所谓引用只是给定对象的一个别名 使用引用作为循环控制变量 ,变量实际被依次绑定到序列的每个元素,使用引用即能改变绑定字符
    访问string对象中单个字符 使用下标迭代器
    下标运算符[] 接收的参数string::size_type类型的值
    参数表示要访问的字符位置
    String对象的下标 >= 0 <string.size() 
    使用下标访问空String引发问题
    while(!string.empty())
    {
    cout << string[0] << endl;
    }
    在访问指定字符之前,检查s是否为空
    只要对string对象使用下标 都有确认那个位置上确实有值
    只要字符串不是常量,就能为下标运算符返回的字符赋值
    
    string s("some string")
    if (!s.empty())    //确保string
    {
    s[0] = toupper(s[0]);为s的第一个字符赋值
    
    }
    提供的是初始化元素值的列表,只能把初始值都放在花括号进行列表初始化,不能放在圆括号
    创建指定数量的元素
    用vector对象容纳的元素数量和所有元素的统一初始值来初始化vector对象
    用vector对象容纳的元素数量和所有元素的统一初始值来初始化vector对象
    vector<int> ivec(10,-1);个数 value 
    vector<> intVector(count,RealValue);
    
    vector<string> stringVector(10,"hi!");
    
    值初始化
    只提供vector对象容纳的元素数量而不用初始值,库会创建初始化值初始值由vector对象中元素的类型决定;
    vector<int> ivec(10);    //10个元素,每个都初始化为0
    vector<string> svec(10);    //10个元素 每个都是空string对象;
    初始值,元素数量
    用一个整数来初始化vector<int>,整数的函数可能是vector对象的容量
    列表初始值还是元素数量
    vector<int> v1(10);    //v1有10个元素,每个的值都是0
    vector<int> v2{10};    //v2有1个元素,元素的值是10;
    vector<int> v3(10,1);    //v3有10个元素,每个元素值都是1
    vector<int> v4{10,1};    //v4有2个元素,值分别是10和1;
    如果用的是圆括号,可以说提供的值是用来构造(construct)vector对象,元素的值可有可无;说明了vector对象的容量
    对象容量和元素的初始值
    元素的类型一定一样,多个vector的元素的值可以一样,也可能不一样
    值得注意:
    vector对象有size方法,用于获取对象的元素个数
    vector对象的每个元素 都有一个索引,所以用于获取对于对象的值;
     vector<int> v1(10);
        //cout << v1.size() << endl;
        for(int i = 0;i < v1.size();i++)
        {
            std::cout <<v1[i] << std::endl;
        }
    初始化使用花括号-在string是值,列表初始化一个含有string对象的vector 应该提供能赋予给String对象的初始值,此时不难区分到底是要列表初始化vector对象的元素还是用给定的容量值来构造vector对象;
    vector<string> v5{"h1"};    //列表初始化,v5有一个元素,值为
    vector<string> v6("hi") 不能使用字符串字面值构建vector对象;
    vector<string> v7{10};
    花括号里面的值需要元素类型一致
    不能用int初始化string对象
    v7 v8提供的值不能作为元素的初始化值确认无法执行列表初始化后,编译器会尝试用默认值初始化vector;
    需要注意两点
    初始化元素值 一定用{}或是用()构造
    初始化值类型一定要与元素类型一致;
    向vector对象中添加元素
    对vector对象 直接初始化适用于 初始值已知且数量较少
    初始值是另外一个
    向vector对象中添加元素
    好的处理方法先创建空vector,在运行时利用vector成员函数push_back向其中添加元素
    push_back负责把一个值当成vector对象的尾元素压到pushvector对象的尾端(back)
    控制变量定义成引用类型
    string *p2 = &nums[0];
    p2 = &nums[0];
    p2存储的是对象的地址,*p2 是解除引用,获取对象的值;
    大多数表达式,使用数组类型的对象其实是使用一个指向该数组首元素的指针
    一些情况下数组的操作实际是指针的操作
    首先定义了两个名为pbeg和pend的整数据
    constexpr size_t sz = 5;
    int arr[sz] = {1,2,3};
    int *ip = arr &arr[0]
    int *ip2 = ip + 4;
    传入此类函数的指针必须指向以空字符作为结束的数组
    传入此类函数的指针必须指向以空字符作为结束的数组
    char ca[] = {'c','+','+'};    //不以空字符结束
  • 相关阅读:
    python生成随机密码
    python计算md5值
    python---连接MySQL第五页
    python---连接MySQL第四页
    梯度下降(Gradient Descent)小结
    矩阵的线性代数意义
    矩阵的意义
    偏导数与全导数的关系 以及 偏微分与全微分的关系
    mysql-blog
    python及numpy,pandas易混淆的点
  • 原文地址:https://www.cnblogs.com/ruiy/p/6775340.html
Copyright © 2020-2023  润新知