C++的string

来源:互联网 发布:房贷利率上调 知乎 编辑:程序博客网 时间:2024/06/06 00:09
  1. C++中初始化string对象有这几种方式
    • string str;      //这样初始化时,str为空字符
    • string str = "bbb";   //将右边的字符串字面值赋值给str字段
    • string str1("AAA");   //用字符串字面值初始化str1
    • string str2(str1);      //将str2初始化为str1的一个副本
    • string str4(5,'a');     //结果为aaaaa,这样可以指定初始化成'a'字符的5个副本

string的常用操作说明str.empty()检查str是否是空字符串,若str为空字符串,则返回true,否则返回falsestr.size()返回str中字符的个数str[n]string类型其实是一个char数组,所以可以用索引访问指定位置的字符,位置从0开始str+str1字符串连接和C#一样,将两个字符串连接成新的字符串,返回新的字符串str = str1字符串赋值操作str == str2字符串比较相等str != str2字符串比较不相等string str = "hello"+"world"    X这样是不合法的,字符串的+号相连C++只允许和类型是string的字段相连接,不允许两个字符串字面值直接相连接str.substr(1,5)返回从str字符串中第1个位置开始,往后的5个字符组成的字符串,如果只填了位置参数,没有填个数的话,那么默认个数为填的位置参数后面的字符串长度,如果输入的位置参数超过了字符的长度,那么会抛出std::out_of_range的异常str.insert(2,str1)在指定位置插入字符串,例如在str字符串的第二个位置,插入str1的字符串str.begin()得到指向字符串开头的Iteratorstr.end()得到指向字符串结尾的Iteratorstr.rbegin()得到指向反向字符串开头的Iterator,也就是endstr.rend()得到指向反向字符串结尾的Iterator,也就是beginstr.length()和size的函数是一样的,得到的是字符串的大小str.max_size()字符串可能的最大大小str.capacity()在不重新分配内存的情况下,字符串容器的大小str.append("aaa")在字符串的末尾追加字符str.erase()删除字符串的内容str.clear()清空字符容器中所有内容,和erase函数不一样的是,这个函数返回的是voidstr.replace(1,1,"L")字符替换,例如从字符串str的第一个位置开始往后的1个字符,替换成'L'str.copy()字符串拷贝str.find()查找,返回基于0的索引号str.rfind()反向查找
暂时只记录下目前用得到的字符串的函数,后面用到的其他的,再行补上



#include <string>
#include <iostream>
using namespace std;
int main(void)
{

       string str = "abcdefg";
       //str的第1个位置往后的5个字符组成的子字符串
       string str1 = str.substr(1,5);
       //结果:bcdef
       cout << str1 << endl;
       string str2 = "123";
       //在str字符串的第2个位置插入str2字符串
       string str3 = str.insert(2, str2);
       //结果:ab123cdefg
       cout << str3 << endl;
       str = "abcdefg";
       //在str字符串的第2个位置插入,str2字符串的第1个位置到后面的2个字符
       //这个2当然是包括从第1个位置的字符
       string str4 = str.insert(2, str2, 1, 2);
       //结果:ab23cdefg
       cout << str4 << endl;
       str = "abcdefg";
       //结果同上:ab23cdefg,如果后面字符的个数没有填写,那么代表个数为str2的字符串的长度
       string str5 = str.insert(2, str2, 1);
       cout << str5 << endl;
       str = "abcdefg";
       //在str字符串中第2个位置插入3个':'字符
       string str6 = str.insert(2,3,':');
       //结果:ab:::cdefg
       cout << str6 << endl;
       str = "abcdefg";
       string::iterator it;   //字符串的迭代器
       it = str.insert(str.begin()+1,'-');
       //-
       cout << *it << endl;
       //a-bcdefg
       cout << str << endl;

       system("pause");

       return 0;
}
原创粉丝点击