一、字符串的拼接
string类提供了两种方式来进行字符串的拼接操作,一种是使用“+”运算符,另一种是使用成员函数append()。
使用“+”运算符
string str1 = "Hello ";
string str2 = "world!";
string str3 = str1 + str2;
在以上代码中,通过使用“+”运算符,将str1与str2拼接起来,并将结果存储在str3中。这个方法的优点是简单易懂,但是当需要拼接的字符串较多时,使用“+”操作符可能会产生一些性能问题。
使用成员函数append()
string str1 = "Hello ";
string str2 = "world!";
str1.append(str2);
在以上代码中,通过使用成员函数append(),将str2拼接到了str1的尾部。这个方法的优点是可以拼接任意数量的字符串,而且效率较高。
二、字符串的比较
string类提供了多种方式进行字符串的比较,包括“==”、“!=”、“<”、“>”、“<=”、“>=”等运算符,以及成员函数compare()。
使用运算符
string str1 = "apple";
string str2 = "banana";
bool result = (str1 == str2);
在以上代码中,使用“==”运算符比较了两个字符串的内容,然后将结果存储在了result变量中。
使用成员函数compare()
string str1 = "apple";
string str2 = "banana";
int result = str1.compare(str2);
在以上代码中,使用成员函数compare()比较了两个字符串的内容,返回的结果可以分为三种情况:
- 如果str1等于str2,返回0;
- 如果str1小于str2,返回一个负数;
- 如果str1大于str2,返回一个正数。
三、字符串的查找
string类提供了多种方法进行字符串的查找,包括成员函数find()、rfind()、find_first_of()、find_last_of()等。
使用成员函数find()
string str = "hello world";
int pos = str.find("world");
在以上代码中,使用成员函数find()查找了子串“world”在字符串中第一次出现的位置,并将结果存储在了pos变量中。如果没有找到,会返回string::npos。
使用成员函数rfind()
string str = "hello world";
int pos = str.rfind("o");
在以上代码中,使用成员函数rfind()查找字符“o”在字符串中最后一次出现的位置,并将结果存储在了pos变量中。如果没有找到,会返回string::npos。
使用成员函数find_first_of()
string str = "hello world";
int pos = str.find_first_of("aeiou");
在以上代码中,使用成员函数find_first_of()查找字符串中第一个元音字母的位置,并将结果存储在了pos变量中。如果没有找到,会返回string::npos。
使用成员函数find_last_of()
string str = "hello world";
int pos = str.find_last_of("aeiou");
在以上代码中,使用成员函数find_last_of()查找字符串中最后一个元音字母的位置,并将结果存储在了pos变量中。如果没有找到,会返回string::npos。
四、字符串的替换
string类提供了成员函数replace()进行字符串的替换操作,其语法为:
string& replace(size_t pos, size_t len, const string& str);
其中,pos表示要开始替换的位置,len表示要替换的子串的长度,str表示用来替换的字符串。
使用成员函数replace()
string str = "hello world";
str.replace(0, 5, "hi");
在以上代码中,通过使用replace()函数,将字符串“hello”替换成了“hi”,得到了新的字符串“hi world”。
五、字符串的分割
string类本身并没有提供字符串的分割函数,但是可以结合sstream头文件中的stringstream类进行字符串的分割。
使用stringstream类进行字符串的分割
string str = "apple,banana,orange";
stringstream ss(str);
string temp;
vector
vec;
while (getline(ss, temp, ',')) {
vec.push_back(temp);
}
在以上代码中,首先将字符串str放入了一个stringstream对象中,然后使用getline()函数和逗号为分隔符将字符串分割成若干子串,并将它们存储在了vector容器中。