21xrx.com
2024-09-20 01:01:59 Friday
登录
文章检索 我的文章 写文章
C++删除指定字符
2023-07-01 21:30:27 深夜i     --     --
C++ 删除 指定字符

在C++编程过程中,删除指定字符通常是必不可少的操作。本文将介绍几种方法来删除C++字符串中的指定字符。

方法一:使用循环遍历

使用循环遍历是最简单的方法。使用一个for循环遍历整个字符串, 如果当前字符不是需要删除的字符,则将其加入新的字符串中。

例如,现有字符串str,需要删除字符c,代码会如下所示:


string str = "hello, world!";

char c = 'l';

string newStr = "";

for(int i=0; i<str.size(); i++){

  if(str[i] != c){

    newStr += str[i];

  }

}

cout << newStr;  //输出"heo, word!"

此方法虽然简单,但是实现起来有些麻烦。当需要删除的字符较多时,代码量会增加,影响程序的可读性。所以,我们有更加简单和优雅的方法实现该操作。

方法二:使用erase函数

C++中的string类提供了一个名为erase的函数,它可以用来删除字符串中的任意一段。我们只需要用这个函数来删除字符串中出现的需要删除的字符即可。

代码如下:


string str = "hello, world!";

char c = 'l';

while(str.find(c) != string::npos){ //循环查找需要删除字符的位置

  str.erase(str.find(c), 1);    //使用erase函数删除字符

}

cout << str; //输出"heo, word!"

使用这种方法实现删除指定字符的功能非常简单。只需要通过字符串的find函数在字符串中查找需要删除的字符出现的位置,然后使用erase函数将其删除即可。

方法三:使用remove和erase函数

C++中的remove算法可以用来删除指定元素,它会将指定元素“移动”到容器的末尾,返回一个迭代器指向需要删除元素的第一个位置。我们只需要使用vector的erase函数从容器中删除指定元素即可。

代码如下:


string str = "hello, world!";

char c = 'l';

vector<char> vec(str.begin(), str.end());

auto newEnd = remove(vec.begin(), vec.end(), c);

vec.erase(newEnd, vec.end());

string newStr(vec.begin(), vec.end());

cout << newStr;  //输出"heo, word!"

这种方法使用了C++标准库中的remove和erase函数,并转换为vector容器来使用。使用remove算法可以很方便地将需要删除的元素移动到容器末尾,而使用erase函数可以从中删除元素,这种方法可以用来删除指定的多个字符。

总结

以上列举了3种方法用来删除C++字符串中的指定字符,它们每个都有其优点和缺点。当需要删除单个字符时,建议使用方法二;当需要删除多个字符时,建议使用方法三。无论使用哪种方法,都要注意输入的字符串是否为空。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复