美文网首页
C++ string的使用

C++ string的使用

作者: 大梦一场三十一 | 来源:发表于2018-03-08 20:09 被阅读0次

    为了理解C++ string类的必要性,需要考虑C风格字符串的优势和劣势。
    优势:

    • 很简单,底层使用了基本的字符类型和数组结构。
    • 量级轻,如果使用得当,只会占有所需的内存。
    • 很低级,因此可以按操作原始内存的方式轻松操作和复制字符串。
    • 能够很好地被C语言理解——为什么还要学习新事物?
      劣势:
    • 为了模拟一等字符串数据类型,需要付出很多努力。
    • 使用难度大,而且很容易产生难以找到的内存BUG。
    • 没有利用C++的面向对象特性。
    • 要求程序员了解底层的表示方式。

    以上来自C++高级编程第三版。

    • string str1("abcd");

    • string str2(5, 'a');
      复制5个a,注意使用单引号。而有趣的是string str2(5,'abc');则会出现5个c;

    • string str3("abcdefghijk",3);
      str3取abc;

    • string str4 ( "abcdefghijk",3,5);
      从第4个字符开始取5个字符,不足4个字符取空,多过4个少于9个时从第4个到最后一个。

    • string str = "abcdefghijk";
      str.substr(3,5);//与上面类似
      注:对于原始字符串来说
      string str = "Hello "World"!";
      string str = R"(Hello "World"!)"
      那么对于字符中出现)"这个字符可以使用以下方式
      string str =R"-(the characters )" are......)-"

    • string str2(str1)

    • string str1 = "abc";string str2 = str;

    • assign用于赋值,拷贝的string的类函数
      string str1("abcdefgh");string str2;
      str2.assign(str1,3);//取前三个字符赋值给 str2
      str2.assign(str1,3,2);//取第三之后的2个字符

    • string str ="abcdefg";
      char ch1 = str[2];

    • char ch2 = str.at(2);//越界后,能够抛出异常被捕获

    • 修改字符
      str[3]='z';
      str.at(4)='x';
      我觉得还是该多注意单引号和双引号

    string常用的类函数
    • int lenth =str.length();//返回字符串长度,不包含‘\0'

    • int strSize = str.size();//同length

    • bool flag = str.empty();//判断是否为空

    • compare比较字符,按照字典顺序,比较大小,大于返回1,小于返回-1;等于返回0;
      string str1 ="abc";
      string str2 = "xyz"
      char *ch = "omg";
      int i =str2.compare(str1);
      int j = str2.compare(ch);

    • 字符串的增
      str+=str1;
      str+=ch;
      str.append("xyz");
      str.append("xyz",3);
      str.append("xyz",1,2);//在字符后面添加了xy

    • 字符串的插入
      str.insert(1,"xxx");
      str.insert(1,str1);
      str.insert(1,3,'x');//复制3个x增加在第一位后面,注意单引号

    • 字符串的删除
      str.erase(2,3)//从第三位开始删除3个字符

    • 字符串的替换
      str.replace(1,2,"-------");//从第1个后面的2个字符替换-------;

    • 字符串的交换
      swap(str1,str2);
      str.swap(str2);

    -字符串的查找
    str.find('c');//寻找c的位置,如果没有寻找到则赋值为-1;
    str.find('c',2);//从下标为2开始寻找c,如果没有寻找到则赋值为-1;
    str.find(ch);
    关于查找函数可以看
    http://blog.csdn.net/sr_19930829/article/details/21476287

    string函数可以看
    http://blog.csdn.net/qiulanzhu/article/details/50450424

    接下来是有趣的东西


    image.png

    相关文章

      网友评论

          本文标题:C++ string的使用

          本文链接:https://www.haomeiwen.com/subject/pdysfftx.html