zoukankan      html  css  js  c++  java
  • 【转载】 C++ stl string 操作

     
     

    总结一下C++中string的操作,来自〈C++ Primer〉第四版。

    1. string对象的定义和初始化:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    string s1;         //空串
    string s2(s1); //将s2初始化为s1的一个副本
    string s3("value"); //s3初始化并赋值
    string s4(n,"c"); //s4初始化,赋值为n个'c'
    string s5(b,e); //初始化s5为迭代器b,e范围内的副本
    string s6(cp); //用c风格的字符串初始化
    string s7(cp,n); //cp前n个元素的副本
    string s8(s2,pos2); //s8为s2从pos2开始到结尾的副本
    string s9(s2,pos2,len2);//同上,不过的长度为len2(不超过s2的长度)
    //其中有一种方法需要注意:
    char no_null[] = {'H','i'};
    string s10(no_null); //错误,不是以null结尾的串
    string s10(no_null,2); //ok,可以自动添加null结尾

    2. string的读写:

    1
    2
    3
    4
    5
    6
    string s;
    cin >> s;
    cout << s << endl;
    //注意,cin是会被空白符截断的
    //要得到整行输入,采用while循环,或者:
    getline(cin,s);

    3.string的操作:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    s.empty();    //判断s是否为空,相当于s.size()==0
    s.size(); //s的长度
    s[n]; //n位置的字符(左值返回)
    s1+s2; //返回s1和s2连接的串
    s1=s2; //把s1替换为s2的副本
    s1==s2; //判断s1,s2是否相等
    !=,<,<=,>,>= //按字典顺序比较
    //==================
    s.insert(p,t); //在迭代器p指向的元素前插入t,返回指向t的迭代器
    s.insert(p,n,t);//同上,插入n个t,返回void
    s.insert(p,b,e);//插入迭代器b,e间的元素,返回void
    s.insert(pos,n,c); //在pos前插入n个字符c,返回s的引用
    s.insert(pos,s2);//在pos前插入s2,返回s的引用
    s.insert(pos,s2,pos2,len);
    //在pos前插入s2中从pos2开始的len个字符,返回s的引用
    s.insert(pos,cp,len);
    //pos前插入cp数组(c风格字串)的前len个字符,返回s的引用
    s.insert(pos,cp);//在pos前插入cp,返回s的引用
    //==================
    s.assign(b,e); //用b,e间的元素替换s,返回s
    s.assign(n,t); //用n个t替换s,返回s
    s.assign(s2); //用s2的副本替换s,返回s的引用
    s.assign(s2,pos2,len);
    //用s2从pos2开始的len长的副本替换s,返回s的引用
    s.assign(cp,len)//用cp的前len个字符副本替换s,返回s的引用
    s.assign(cp) //用cp的副本替换s,返回s的引用
    //==================
    s.erase(p); //删除迭代器p指向的元素,返回指向后一个元素的迭代器
    s.erase(b,e); //删除b,e间的元素,返回值同上
    s.erase(pos,len);//删除从pos开始的len个字符,返回s的引用
    //==================
    s.substr(pos,n);//返回s中从pos开始的n个字符组成的串
    s.substr(pos); //返回s中从pos开始到结尾的串
    s.substr(); //返回s的副本
    //==================
    s.append(args); //将args串接在s的后面,返回s的引用
    //==================
    s.replace(pos,len,args);
    //删除s中从pos开始的len个字符,用args串替换,返回s的引用
    //args不能为b2,e2
    s.replace(b,e,args);
    //删除迭代器b,e范围内的字符,用args替换,返回s的引用
    //args不能为s2,pos2,len2
    //==================append,replace的args的说明
    s2 //string
    s2,pos2,len2 //s2中下pos2开始的len2个字符
    cp //c风格的串
    cp,len2 //cp指向以空结束的前len2个字符
    n,c //字符c的n个副本
    b2,e2 //迭代器b2,e2范围内的所有字符

    4.string的查找操作:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    s.find(args);    //args的第一次出现
    s.rfind(args); //最后一次出现
    s.find_first_of(args);//args中任意字符的第一次出现
    s.find_last_of(args);//args中任意字符的最后一次出现
    s.find_first_not_of(args);//查找第一个不属于args的字符
    s.find_last_not_of(args);//查找最后一个不属于args的字符
    //=================args
    c,pos=0 //查找字符c,默认从s的0位置开始
    s2,pos=0 //查找s2
    cp,pos=0 //查找cp(c风格字串)
    cp,pos,n //从s的pos开始查找cp的前n个字符,没有默认值

    5.string的比较:

    除了刚才提到的等号及不等号的比较,c++还提供了一个比较函数compare

    1
    2
    3
    4
    5
    6
    7
    8
    s.compare(s2);    //比较s和s2
    s.compare(pos1,n1,s2);//s从pos1开始的n1个字符与s2比较
    s.compare(pos1,n1,s2,pos2,n2);
    //s从pos1开始的n1个字符与s2从pos2开始的n2个字符比较
    s.compare(cp); //比较s和cp
    s.compare(pos1,n1,cp); //s从pos1开始的n1个字符与cp比较
    s.compare(pos1,n1,cp,n2); //s从pos1开始的n1个字符与cp的前n2个字符比较
    //compare的返回值: >0 s大; <0 s小; =0 二者相等

    6.cctype提供的字符判断函数:

    需要包含头文件: #include<cctype>

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    isalnum(c);    //true if c 是数字或字母
    isalpha(c); //true if c 是字母
    iscntrl(c); //true if c 是控制字符
    isdigit(c); //true if c 是数字
    isgraph(c); //true if c 不是空格但可打印
    islower(c); //true if c 是标点符号
    isprint(c); //true if c 是空白字符
    ispunct(c); //true if c 是大写字母
    isspace(c); //true if c 是空白字符
    isupper(c); //true if c 是大写字符
    isxdigit(c); //true if c 是十六进制数
    tolower(c); //将c转换为小写
    toupper(c); //将c转换为大写
     原文地址 http://pwwang.com/technology/c-c-plus-plus-technology/c%E6%A0%87%E5%87%86%E5%BA%93string%E7%B1%BB%E5
     
  • 相关阅读:
    vba Application.OnTime 定时器
    Linq to XML
    Jquery Ajax+.ashx Json数据格式
    存储过程
    Jquery Ajax +.ashx XML数据格式
    原生态JS  图片滚动
    Standup Timer的MVC模式及项目结构分析
    android的Handler
    Microsoft Office Sharepoint Server 2007数据库日志文件逐渐增大处理笔记
    windows 网络编程学习Winsock API
  • 原文地址:https://www.cnblogs.com/helloWaston/p/4522585.html
Copyright © 2011-2022 走看看