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个字符
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)