c++ string类总结(二)

上篇博文介绍c++string类的函数库c++ string类总结(一)
今天继续和大家分享其他函数的用法:

  • string类特性:string类与char的区别
    1 char
    是一个指针,string是一个类
    2 string类封装了char*,是char*的容器
    3 string封装类很多方法,find,copy等,不必考虑数组越界与内存释放
  • string与char*的相互转换
     int main()
    {
    	string s1 = "abcde";
    	const char*str = s1.c_str();//string转char*
        const	char* str2 = "123";
    	string s2(str2);//char*转string
    	string s3 = str2;//char*转string
    	system("pause");
    	return 0;
  }

  • string赋值操作
    函数库:
    string &operator=(const chars);//char转字符串
    string &operator=(const char&string&s);
    string &operator=(char c);
    string &assign=(const char*s);
    string &assign=(const string&s);
    string &assign=(int n,char c);//复制n个c给字符串
    string &assign=(string &s,int start,int n);//取s从start处复制n个字符给字符串
int main()
{
	string s1 = "abcde";
	string s2;
	s2.assign(s1);
	string s3 = s2;//char*转string
	system("pause");
	return 0;
}
  • 取字符操作
    char&operator[] (int n)
    char &at(int n)
    比较:at比[]更加安全,访问数组越界时,at会抛出异常,[]会直接报错,这里不再举例

  • 比较函数compare()
    int compare(const char * s);
    int compare(const string &s);

  • 查找和替换
    int find(const char s,int pos=0);//从pos处开始查找s
    int find(const string &s,int pos=0);
    int rfind()参数与find函数相同,区别是rfind从后向前查找,即查找最后一个相匹配的字符或字符串
    string & replace(int pos,int n,const string &s)
    string & replace(int pos,int n,const char
    s)

int main()
{
	string s1 = "abcde";
	int a = s1.find("a");
	int b = s1.find("c", 2, 1);//从第三个字符开始查找一个
	int c = s1.find("a", 1, 1);
	string s2 = s1.replace(1, 2, "123");
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
	cout << s2 << endl;
	system("pause");
	return 0;
}

运行结果:(-1代表没找到)
c++ string类总结(二)_第1张图片

  • 取子串
    string & substr(int pos=0,int n)
    string & substr(int pos=0,int n)
    从pos处开始取n个字符
int main()
{
	string s1 = "abcde";
	string s2 = s1.substr(0, 1);
	system("pause");
	return 0;
}
  • 插入和删除
    string &insert(int pos,const char*s)
    string &insert(int pos,const string&s)
    string &insert(int pos,int n,const char c)
    string &erase(int pos,int n=npos)
int main()
{
	string s1 = "abcde";
	string s2 = s1.insert(1, "12");
	string s3 = s1.erase(0, 1);
	cout << s2 << endl;
	cout << s3 << endl;
	system("pause");
	return 0;
}

结果:
c++ string类总结(二)_第2张图片

你可能感兴趣的:(C++)