整理自C++ Primer第四版
一、定义和初始化
string str; 默认构造函数,str为空的字符串
string str(“abcdef”); 将str初始化为相应的字符串字面值
string str(n,‘a’); 将str初始化为n个‘a’的字符串
string str(cp); 其中cp为一个指向C风格字符串的指针 如 char * cp=“abcdefg”;
string str(cp,n); 将str初始化为cp指向的字符数组的前n个字符 如:char* cp=“abcdefg”;string str1(cp,3);则str1=abc; 需要注意越界问题
string str(str1); 将str初始化为str1的一个副本
string str(str1,pos) 将str初始化为字符串str1从pos位置开始到末尾的字符串
string str(str1,pos,n) 将str初始化为字符串str1从pos位置开始的n个字符,若超出字符串str1末尾,则为pos到str1末尾的字符串 (无越界问题)
string str(iter1,iter2); 将str初始化为迭代器iter1与iter2所指向的字符串,包括iter1但不包括iter2,iter1与iter2指向同一个字符串且iter2>=iter1
二、常用操作
str.empty() 判断str是否为空字符串,若是则返回true 否则返回false;
str.size() 返回str字符串的长度
str1=str2 将str2直接赋值给str1
str1=str1+str2 将str2字符串加在str1后
str[n] 取str字符串中的第n+1个元素,可以对其赋值改变str字符串
以下函数包含在cctype头文件中,c为一个字符
isalnum(c) 判断c是否为数字或字母
isalpha(c) 判断是否为字母
isdigit(c) 判断是否为数字
islower(c) 判断是否为小写字母
isupper(c) 判断是否为大写字母
tolower(c) 返回c对应的小写字母
toupper(c) 返回c对应的大写字母
三、修改string的方法
插入操作,str.insert()函数:
str.insert(p,c) 在位置p的元素之前插入c,其中p为str字符串的下标或者指向str的迭代器,若p为迭代器,则返回指向新元素的迭代器
str.insert(p,n,c) 在位置p的元素之前插入n个c,其中p为str字符串的下标或者指向str的迭代器,返回void
str.insert(p,b,e) 在迭代器p的元素之前插入迭代器b,e范围内的所有元素,返回void
str.insert(pos,str1) 在下标pos的元素之前插入str1字符串的副本
str.insert(pos,str1,pos2,n) 在下标pos的元素之前插入str2字符串从下标pos2开始的n个元素
str.insert(pos,cp,n) 在下标pos的元素之前插入cp指向的字符数组的n个字符,注意越界问题
str.insert(pos,cp) 在下标pos的元素之前插入cp指向的字符数组,(以/n结束)
替换操作,str.assign()函数:
str.assign(b,e) 将str替换为迭代器b,e指向的范围内的元素,迭代器为指向string的迭代器则返回str,若为指向容器的元素返回void
str.assign(n,c) 将str替换为n个c
str.assign(str1) 将str替换为str1
str.assign(str1,pos,n) 将str替换为str1从pos开始的n个元素
str.assign(cp,n) 将str替换为cp指向的字符数组的前n个元素
str.assign(cp) 将str替换为cp指向的字符数组
删除操作,str.erase():
str.erase(p) 删除str中迭代器p指向的元素,返回指向被删除元素的后一个元素的迭代器
str.erase(b,e) 删除str中迭代器b,e在范围内的元素,返回指向被删除元素段的后一个元素的迭代器
str.erase(pos,n) 删除str中下标pos开始的n个字符
上述函数无特别说明的均返回string的引用
四、string类型的操作
取str字符串的子串str.substr()函数:
str.substr(pos,n) 返回从下标pos开始的n个字符的字符串
str.substr(pos) 返回从下标pos开始到末尾的字符串
str.substr() 返回str的副本
删除指定范围的字符串并插入新的字符 str.replace()函数:
str.replace(pos / b, n / e, str1) 删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入str1
str.replace(pos / b, n / e, cp) 删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入cp指向的字符数组(需以空字符结束)
str.replace(pos / b, n / e, cp, n1) 删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入cp指向的字符数组开始的n1个字符
str.replace(pos / b, n / e, n1, c) 删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入n1个c字符
str.replace(pos , n , b, e) 删除下标pos开始的n个元素,并在删除的位置插入迭代器b、e标记范围内的字符
str.replace(b , e, str1, pos, n1) 删除迭代器b、e标记的元素,并在删除的位置插入字符串str1从下标pos开始的n1个元素
在字符串末尾插入新的字符串 str.append()函数:
str.append(str1) 类似+操作符的功能,将str1链接在str的后面
str.append(str1,pos,n) 将str1从下标pos元素开始的n个元素连接在str的后面
str.append(cp) 将cp指向的字符串数组(需要以空字符结尾)连接在str的后面
str.append(cp,n) 将cp指向的字符串数组的前n个元素连接在str的后面
str.append(n,c) 将n个c字符连接在str的后面
str.append(b,e) 将迭代器b、e标记范围内的字符连接在str的后面
查找指定的字符 str.find()函数:
str.find(c, pos) str中从下标pos开始,查找字符c,pos默认为0
str.find(str1, pos) str中从下标pos开始,查找字符串str1,pos默认为0
str.find(cp, pos) str中从下标pos开始,查找cp指向的字符数组(以空字符结束),pos默认为0
str.find(cp, pos,n) str中从下标pos开始,查找cp指向的字符数组的前n个字符,无默认值
str.find查找第一次出现,str.rfind()查找最后一次出现,str.find_first_of()查找参数中任意字符的第一次出现,str.find_last_of()插在参数中任意字符的最后一次出现
str.find_first_not_of()查找第一个不在参数中的字符,str.find_last_not_of()查找最后一个不在参数中的字符,其他函数的参数均与find函数相同
返回类型为 string::size_type
字符串的比较操作 str.compare()函数:
str.compare(str1) 比较str与str1
str.compare(pos, n, str1) 比较str从下标pos开始的n个元素与str1
str.compare(pos1, n1, str1, pos2 ,n2) 比较str从下标pos1开始的n1个字符与str1从下标pos2开始的n2字符
str.compare(cp) 比较str与cp指向的字符数组
str.compare(pos , n, cp) 比较str从下标pos开始的n个字符与cp指向的字符数组
Str.compare(pos, n,cp,n1) 比较str从下标pos开始的n个字符与cp指向的字符数组的前n1个字符
返回正数和str字符串比参数中的字符串大,返回负数表示str字符串比参数的字符串小,返回0则表示相等