C++string容器

C++string容器,第1张

C语言中维护和管理字符串往往是用char*来做的,string是C++风格的字符串,C++使用string类会更加方便,因为string已经是STL中一个比较完善的容器了,对于字符串的增删查改,已经查找子串等 *** 作利用string容器的一些接口函数来实现会非常便利。

我们用好string容器对于我们编写程序来说会有很大的帮助。

首先我们要对string有一些认识

string本质上是一个类,是一个char*类型的容器,而char*本质是一个指针。

string类中封装了很多成员方法:增删查改等功能比较完善,并且自己使用的时候不用担心C语言中的指针越界访问等等一系列的问题,非常的便利。

下面会介绍一些string的常用接口函数

1、构造函数 (对应C中初始化字符串)

 string();                                 //创建一个空字符串  例如: string str;
 string(const char* s);            //使用字符串s初始化
 string(const string &s);         //使用一个string对象初始化另一个string对象
 string(int n, char c);              //使用n个字符c初始化

2、赋值 *** 作  (C语言中有时候不能直接赋值,需要自己实现z)

-string& operator= (const char* s);              //char*类型字符串  赋值给当前字符串
-string& operator= (const string &s);           //把字符串s赋值给当前字符串
-string& operator= (char c);                         //字符赋值给当前字符串
-string& assign(const char* s);                    //把字符串s赋给当前字符串
-string& assign(const char* s, int n);           //把字符串s的前n个字符赋给当前字符串
-string& assign(const string &s);                 //把字符串s赋给当前字符串
-string& assign(int n, char c);                     //用n个字符c赋给当前字符串

赋值 *** 作可以通过重载=和接口函数assign两种方法实现

3、字符串拼接 (对应C中的strcat字符串追加函数  还有strncat)

-string& operator+=(const char* str);                  //重载+= *** 作符
-string& operator+=(const char c);                     //重载+= *** 作符
-string& operator+=(const string &str);               //重载+= *** 作符
-string& append(const char* s);                         //把字符串s连接到当前字符串结尾
-string& append(const char* s, int n);                //把字符串s的前n个字符连接到当前字符串结尾
--string& append(const string &s);                     //同operator+=(const string &str)
string& append(const string &s, int pos, int n);  //字符串s从pos位置开始的n个字符链接到字符结尾

4、字符串查找和替换    (C中查找和替换字符串也需要自己来实现)    

4.1 查找:

string中查找提供了 rfind和find  

find和rfind调用都会返回待查找子字符串在原字符串的位置

区别:rfind从右往左查找,find从左往右查找

void Test1()
{
	string str1 = "abcdefgde";

	int pos = str1.find("de");
	if (pos == -1)
	{
		cout << "未找到字符串" << endl;
	}
	else
	{
		cout << "找到字符串,pos = " << pos << endl;
	}

	//rfind 和 find的区别
	//rfind从右往左查找 find从左往右查找
	pos = str1.rfind("de");
	cout << "pos = " << pos << endl;
}

    find对应输出的pos = 3 ,rfind对应输出pos = 7

4.2 替换:

void Test2()
{
	string str1 = "abcdefg";

	//从1号位置起 3个字符 替换为"1111"
	str1.replace(1, 3, "1111");
	cout << "str1 = " << str1 << endl;
}

5、字符串比较 (对应C中strcmp 和 strncmp)

int compare(const string &s)const

一个个比,比ASCII码值 大于返回 >0  小于返回 < 0  等于返回0

6、字符存取 (起始就是对应的随机访问)

可以直接使用[] 或者利用at来访问

str[i]   str.at(i)

7.插入和删除

//string& insert(int pos, const char* s);                       //插入字符串
//string& insert(int pos, const string& s);                    //插入字符串
//string& insert(int pos, int n, char c);                         //在指定位置插入n个字符c
//string& erase(int pos, int n = npos);                        //删除从Pos位置开始的n个字符

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/872949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存