string类型及其操作。


头文件:string(无.h!)

 

string类的构造函数与析构函数:

1、string s;

2、string s(str);// copy str to s;

3.string s(str, strhead);//copy str to s from the strhead position

4.string s(str,strhead,strtail);//copy str to s from strhead to strtail

5.string s(cstr);//copy a c string to s;

6.string s(char*, char*len);//copy a c string from 0 to char*len to s;

7.string s(int n, char c); // s包含n个c字符

8s.~string();//销毁所有字符,释放内存。

 

字符串操作函数:

1.= or assign(),赋值函数

2.swap() // 交换两个字符串。

3.+= or append or push_back()//在尾部加字符

4.insert()//插入字符

5.erase()//删除字符

6.clear()//删除全部字符

7.replace()//替换字符

8.+//串联字符串

9.== != < <= > >= compare()//比较字符串

10. size(), or length(), //返回字符数量

11. max_size(), // 返回字符可能的最大数

12. empty()// 判断字符串是否为空

13. capacity()//返回重新分配之前的字符容量

14. reserve()//保留一定量内存以容纳一定数量的字符

15. [], at()//访问单一字符

16. >>,getline()//从stream 中读取某值

17.<<// 将某值输出至stream

18.data(),// 将内容以字符数组形式返回

19. substr()//返回某个字符串

20. begin(), end()// 提供类似stl迭代器支持

21.rbegin(), rend()//逆向迭代器

22.get_allocator()//返回配置器

 

 

length()和size()等效。

调用:

string s = "hello";

cout<<s.length()<<endl;

输出5\n

 

max_size():

调用:

string s;

cout<<s.max_size()<<endl;

输出:1073741820\n

 

[],at():

调用:

string s = "hello";

有s[4] = 'o'.

s[s.length()]未定义,但是数据类型是const string时定义了,s[s.length()] = '\0'

 

compare():

调用:

string s = "abcd";

cout<<s.compare("abce")<<endl;

输出-1\n;

 

assign():

调用:

string s = "hello";

s.assign("world");//将s赋值为world

s.assign(str, 1, 3);//将s赋值为str[1]~str[3]

s.assign(5,'x');//将s赋值为5个x

s.assign("nico", 5);//将s赋值为“nico\0",若整数大于字符串长度+1,则后续出现乱码。

s.assign(str, 3, string::npos);//将s赋值为从str[3]开始直到末尾

 

append():

s+=str; or s.append(str);//在s尾部加入字符串。

s.append(str,1,3);//尾部加入str 的1~3位

其他和assign 解释类似,就是用途改为添加。

 

insert():

string s = "hello";

s.insert(2,”aaaa");//s == "heaaaallo",即在1,2之间插入。

不支持插入单个字符,可以用字符串形式插入。

这个函数貌似比较复杂,待研究。

 

earse() & replace():

string s = "i99n";

s.replace(1,2,"nternatio");//把从索引1开始的两个字符替换为最后的字符串,此时s="internation"

s.erase(2);//从索引2后全部删除,此时s = "in"

s.erase(3,5);//从索引3开始往后删除5个, s= "internn"

 

substr():

提取子串

s.substr();//返回s;

s.substr(11);//返回索引11以后的子串

s.substr(5,6);//返回索引5开始(就是包含索引5)的6个字符

 

查找搜索:

find(int first, int last, const type val)//从first 到last,返回第一个和val相等的元素的索引,无相同则返回last

rfind(int pos,const type val)//如果输入了pos,则从pos开始不包括pos位置从后往前搜索,返回第一个和val相等的元素的索引,否则返回一个数(我测试时返回的是469427695),如果不输入pos,则从末尾开始从后往前搜索。

find_first_of(),find_last_of(),find_first_not_of(),find_last_not_of(),见字面意思,与上面两个函数类似。

 

string s = "hello"

cout<<s.find('l')<<endl;

输出:2\n

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM