您的位置:

用C++的string类来处理字符串

一、字符串的拼接

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()比较了两个字符串的内容,返回的结果可以分为三种情况:

  1. 如果str1等于str2,返回0;
  2. 如果str1小于str2,返回一个负数;
  3. 如果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容器中。