C++ string类成员函数总结

函数名称功能函数说明

=,

assign

赋以新值

1、str1=str2:将str2赋值给str1;

2、assign(str2):复制str2。例:string str4;   str4.assign(str3);

3、assign(str2,2,3):将str2的第2个字符开始的3个字符赋值。例:string str3; str3.assign(str2, 2, 3);如不添加第三个参数,默认为第N位后的所有的字符赋值给str3

4、assign(int n,char C):例:string str6; str6.assign(5, 'A');将str6赋值为5个A

swap交换swap(str1,str2):交换str1和str2的值,例:string str1 = "AAA";    string str2 = "BBB"   swap(str1, str2);

+ =,

append( ),push_back()

添加字符

1、+=:将两个字符串相加并赋值为新的字符串。

2、append(str1),在字符串末尾添加str1,例:string str3 = "ABC ";    str3.append(str1);

3、append(str1,n),在字符串末尾添加str1的前n位,例:string str4 = "ABCDE ";    str4.append(str1,1);

4、append(str1,n1,n2),在字符串末尾添加str1的第n1位开始后的n2位,例:string str5 = "ABCDE ";    str5.append(str1,2,3);

5、append(n,char),在字符串末尾添加n个字符,例:string str6 = "Hello "; str6.append(4, 'w');

6、push_back(char),向字符串末尾添加单个字符,不能添加字符串,例:string str7 = "Hello ";     str7.push_back('1');  

insert ()插入字符

1、string &insert(int p0, const char *s);——在p0位置插入字符串s

2、string &insert(int p0, const char *s, int n);——在p0位置插入字符串s的前n个字符

3、string &insert(int p0,const string &s);——在p0位置插入字符串s

4、string &insert(int p0,const string &s, int pos, int n);——在p0位置插入字符串s从pos开始的连续n个字符

5、string &insert(int p0, int n, char c);//在p0处插入n个字符c

6、iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置

7、void insert(iterator it, const_iterator first, const_iteratorlast);//在it处插入从first开始至last-1的所有字符

8、void insert(iterator it, int n, char c);//在it处插入n个字符c

erase()删除字符

(1)erase( pos, n); 删除从pos开始的n个字符,例如erase( 0, 1),删除0位置的一个字符,即删除第一个字符

(2)erase( position); 删除position处的一个字符(position是个string类型的迭代器)

(3)erase(first,last);删除从first到last之间的字符,(first和last都是迭代器)

clear ()移除全部字符str.clear(),清空字符串
resize ()改变字符数量str.resize(k,c);第一个参数为字符数,第二个为默认填充字符
replace()替换字符

1、用str替换指定字符串从起始位置pos开始长度为len的字符    string& replace (size_t pos, size_t len, const string& str);

2、用str替换 迭代器起始位置 和 结束位置 的字符    string& replace (const_iterator i1, const_iterator i2, const string& str);

3、用substr的指定子串(给定起始位置和长度)替换从指定位置上的字符串      string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen);

+串联字符串str3=str1+str2
==,! =,<,<=,>,>=,compare()比较字符串内容

字符串比较是比较ASCII值

compare()比较字符串是否相等,相等返回0,不等返回-1

size(),length()返回字符数量

length()只是用来获取字符串的长度

size()函数与length()函数作用相同,size()函数还可以获取vector类型的长度。

max_size ()返回字符的最大可能个数max_size()函数:返回容器C可容纳的最多元素个数
empty ()判断字符串是否为空empty()判断容器是否为空;
capacity ()返回重新分配之前的字符容量c.capacity()函数:返回容器c在需要重新分配更多存储空间之前能够存储的元素总数
reserve()保留内存以存储一定数量的字符c.reserve()函数:告诉容器c应该预留多少个元素的空间
[],at()存取单一字符下标操作符 [] 在使用时不检查索引的有效性,如果下标超出字符的长度范围,会示导致未定义行为。对于常量字符串,使用下标操作符时,字符串的最后字符(即 '\0')是有效的。对应 string 类型对象(常量型)最后一个字符的下标是有效的,调用返回字符 '\0'。
函数 at() 在使用时会检查下标是否有效。如果给定的下标超出字符的长度范围,系统会抛出 out_of_range 异常。
>>,getline()从 stream 中读取某值getline 可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。 getline 函数如下所示: getline(cin, inputLine);
<<将值写入 stream
copy()将内容复制为一个 C - string

copy(v1.begin(), v1.begin() + 5, v2.begin());

第一个参数为原容器起始迭代器,第二个参数为原容器结束迭代器,第三个参数为目标容器起始迭代器。

c_str()将内容以 C - string 形式返回

①因为c_str()返回的只是一个指向某字符串的指针,因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中

② c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。

data()将内容以字符数组形式返回与c_str一样,区别再说c_str是字符串,data()是数组
substr()返回子字符串s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符

find()

rfind()
find_first_of()
find_last_of()
find_first_not_of()
find_last_not_of()

搜寻某子字符串或字符

返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos。所有的函数的参数说明如下:
第一个参数是被搜寻的对象。第二个参数(可有可无)指出string内的搜寻起点索引,第三个参数(可有可无)指出搜寻的字符个数。

begin( ),end()提供正向迭代器支持
rbegin(),rend()提供逆向迭代器支持
get_allocator()返回配置器

=,assign实例

#include <iostream>
#include <string>
using namespace std;

void printstr(string str)   //打印字符串函数
{
	cout << str << endl;
}

int main()
{
	string str1 = "565feafeaeff";
	string str2 = str1;   //将str1赋值给str2
	cout << "str2为:";
	printstr(str2);

	string str3;
	str3.assign(str2, 2, 3);  //将str2的第2位开始的后3位赋值给str3
	cout << "str3为:";
	printstr(str3);

	string str4;
	str4.assign(str3);   //复制str3并赋值给str4
	cout << "str4为:";
	printstr(str4);

	string str5;
	str5.assign(str1, 3);  //将str1的第3位开始后所有位赋值给str5
	cout << "str5为:";
	printstr(str5);

	string str6;
	str6.assign(5, 'A');  //将str6赋值为5个A
	cout << "str6为:";
	printstr(str6);

	return 0;
}

swap实例

#include <iostream>
#include <string>
using namespace std;

void printstr(string str)   //打印字符串函数
{
	cout << str << endl;
}

int main()
{
	string str1 = "AAA";
	string str2 = "BBB";
	swap(str1, str2);
	cout << "str1为:";
	printstr(str1);
	cout << "str2为:";
	printstr(str2);

	return 0;
}

+ =,append( ),push_back() 实例

#include <iostream>
#include <string>
using namespace std;

void printstr(string str)   //打印字符串函数
{
	cout << str << endl;
}

int main()
{
	string str1 = "abcde ";
	string str2 = "12345 ";

	str2 += str1;   //str2+str1并赋值给str2
	cout << "str2为:";
	printstr(str2);
	
	string str3 = "ABC ";
	str3.append(str1);  //在str3尾部加上str1
	cout << "str3为:";
	printstr(str3);

	string str4 = "ABCDE ";
	str4.append(str1,1);  //在str4尾部加上str1的前1位
	cout << "str4为:";
	printstr(str4);

	string str5 = "ABCDE ";
	str5.append(str1,2,3);  //在str5尾部加上str1的第2位开始的后的3位
	cout << "str5为:";
	printstr(str5);

	string str6 = "Hello ";  //在str6后加4个w
	str6.append(4, 'w');
	cout << "str6为:";
	printstr(str6);

	string str7 = "Hello ";  //push_back只能向字符串末尾添加单个字符,不能添加字符串
	str7.push_back('1');
	cout << "str7为:";
	printstr(str7);

	return 0;
}

insert () 实例

#include <iostream>
#include <string>
using namespace std;

void printstr(string str)
{
	cout << str << endl;
}

int main()
{
	string str1 = "hello ";
	string str2 = "world!";

	str1.insert(2, str2); //在str1的第2位处插入str2
	cout << "str1为";
	printstr(str1);

	string str3 = "hello ";
	str3.insert(2, str2, 3); //在str3的第2位处插入str2的前3位
	cout << "str3为";
	printstr(str3);

	string str4 = "hello ";
	str4.insert(2, str2, 2, 2);  //在str4的第2位处插入字符串str2的从2开始的连续2个字符
	cout << "str4为";
	printstr(str4);

	string str5 = "hello ";
	str5.insert(1, 5, 'O');   //在str5的第1位处插入5个O
	cout << "str5为";
	printstr(str5);

	string str6 = "hello ";
	string::iterator it = str6.insert(str6.end(), 'C');  //在str6的末尾处插入C,位置必须为迭代器,返回迭代器
	cout << "str6为";
	printstr(str6);
	cout << "*it: " << *it << endl;

	string str7 = "hello ";
	str7.insert(str7.end(), str2.begin(), str2.end());   //在str7末尾处插入str2开始到结束的字符串
	cout << "str7为";
	printstr(str7);

	return 0;
}

erase() 实例

#include <iostream>
#include <string>
using namespace std;

void printstr(string str)
{
	cout << str << endl;
}

int main()
{
	string str1 = "hello world!";
	str1.erase(2, 2);  //删除从第2位开始的2个字符
	cout << "str1=";
	printstr(str1);

	string str2 = "hello world!";
	str2.erase(str2.begin() + 2);  //删除从第2位开始的字符
	cout << "str2=";
	printstr(str2);

	string str3 = "hello world!";
	str3.erase(str3.begin() + 2,str3.end()-3);  //删除从第2位开始到倒数第3位的所有字符
	cout << "str3=";
	printstr(str3);

	return 0;
}

replace 实例

#include <iostream>
#include <string>
using namespace std;

void printstr(string str)
{
	cout << str << endl;
}

int main()
{
	//用str替换指定字符串从起始位置pos开始长度为len的字符 string& replace(size_t pos, size_t len, const string & str);
	string str1 = "he##llo world!";
	str1.replace(2, 2, "你好");
	cout << "str1=";
	printstr(str1);

	//用str替换 迭代器起始位置 和 结束位置 的字符 string& replace(const_iterator i1, const_iterator i2, const string & str);
	string str2 = "he##llo world!";
	str2.replace(str2.begin(), str2.begin()+5, "你好");
	cout << "str2=";
	printstr(str2);

	// 用substr的指定子串(给定起始位置和长度)替换从指定位置上的字符串 string& replace(size_t pos, size_t len, const string & str, size_t subpos, size_t sublen);
	string str3 = "he##llo world!";
	string substr = "123";
	str3.replace(2, 2,substr, substr.find("2"), 2);
	cout << "str3=";
	printstr(str3);


	return 0;
}

compare 实例

#include <iostream>
#include <string>
using namespace std;

	string str4 = "ABC";
	string str5 = "ABC";
	string str6 = "abc";
	str4.compare(str5) == 0 ? cout << "str4与str5相等" << endl : cout << "str4与str5不相等" << endl;
	str5.compare(str6) == 0 ? cout << "str5与str6相等" << endl : cout << "str5与str6不相等" << endl;


	return 0;
}

copy 实例

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

void myprint(int var)  //打印容器内容
{
	cout << var << " ";
}

void vectest()
{
	vector<int> v1;
	for (int i = 0; i < 10; i++)  //给容器赋值0-9
	{
		v1.push_back(i);
	}

	vector<int> v2;
	v2.resize(v1.size());
	copy(v1.begin(), v1.begin() + 5, v2.begin());

	for_each(v2.begin(), v2.end(), myprint);  //遍历容器并打印
	cout << endl;
}

int main() 
{
	vectest();
}

find()与erase() 综合实例

#include <iostream>
#include <string>
using namespace std;

int main()
{
	//1.find找到空格位置;
	//2.循环条件位置小于字符长度,删除第一个空格,查找第二个空格再删除
	string str;
	cout << "输入字符串:";
	getline(cin, str);
	int n = str.find((char)32);
	while (n<str.length())
	{
		str.erase(n,1);
		n = str.find((char)32);
	}
	cout << "str=" << str << endl;
	

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值