string和char*的区别:
char*是一个指针
string是一个类,类内封装了char*,管理这个字符串,是一个char*型的容器。
string类内封装了很多成员方法,string管理char*所分配的内存,不必担心复制越界和取值越界,由类内部进行负责
string构造函数
string str;创建一个空字符串
string(const char* s)使用字符串s初始化
string(const string& str)使用一个string对象初始化另一个string对象
string(int n,char c)使用n个字符c初始化
string赋值操作
string str;
1.string str="hello world";
2.string str1;str1=str;
3.string str3='a';
4.string str4; str4.assign("hello");
5.string str5; str5.assign("hello", 3);只赋值前三个
6.string str6; str6.assign(str5);
7.string str7; str7.assign(10,'w');
string字符串拼接
string str1="hello";
1.str1+="world";拼接
2.str1+=':';
3.string str2="wow";str1+=str2;
4.string str3="I";str3.append("love");
5.str3.append("gameddd",4);
6.str3.append(str2);
7.str3.append(str2,0,3);从0开始截取3位
string查找和替换
查找
string str="abcdefg";
int pos=str.find("de");
没找到返回-1,找到返回下标
int pos=str.rfind("de");从右往左找第一个的位置
替换
string str1="abcd";
str1.replace(1,3,"1111");字符串会全部替换进去
string字符串比较
比较按ASCII码
=返回0,>返回1,<返回-1
if(str1.compare(str2)==0)返回等于
string字符存取
通过[]方式取字符
string str="hello";
for(int i=0;i<str.size();i++)cout<<str[i]<<endl;
str[0]='x';
通过at方法获取字符
for(int i=0;i<str.size();i++)cout<<str.at(i)<<endl;
str.at(1)='x';
string的插入和删除
插入insert
string str="hello";
str.insert(1,"111");
成果为h111ello
删除erase
str.erase(1,3);
输出hello
string子串:从字符串中获取想要的子串
string substr(int pos=0,int n = npos)const;//返回由pos开始的n个字符组成的字符串
string str="abcdef";
string str1=str.substr(1,3);
str1应该等于bcd,从1 开始取三个
string email="zhangsan@sina.com";
int pos = email.find("@");
string usrname=email.substr(0,pos);