C++|C++ string的使用

为了理解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
【C++|C++ string的使用】接下来是有趣的东西

C++|C++ string的使用
文章图片
image.png

    推荐阅读