从字符串c ++中删除字符

时间:2016-08-02 09:35:17

标签: c++ string replace

我正在尝试从字符串中删除特定字符,但遇到了困难。

我尝试过使用replace()并且没有任何替换字符,但编译器抱怨这一点。

string s = "Hello, this is a test";
replace (s.begin(), s.end(), 'l', '');
cout << s;

我想要的是找到并删除角色&#39; l&#39;所以输出&#34; Heo,这是一个测试&#34;。 不幸的是,我不认为replace()是正确使用的东西,而且有点难过。我们只学习了几周的编程,所以如果这是一个愚蠢的问题,我很抱歉。谢谢:))

3 个答案:

答案 0 :(得分:0)

enter image description here

这是非常明确的前瞻性。如果要将 Hello 替换为 Heo ,请使用这些参数ReplaceWord(str, "Hello", "Heo")调用该函数。

请注意,此示例区分大小写,因此如果您使用小写h,它将完全不替换,它将找不到该单词,它必须是大写字母H.

#include <iostream>
#include <string>
using namespace std;


void ReplaceWord( std::string& source, const char* WordToFind, const char* WordToReplace );

//program entry point
int main (){

    cout<<""<<endl;

    string str = "Hello, this is a test";

    cout<<"Before replace : "<<endl;
    cout<<str<<endl;
    cout<<""<<endl;

    ReplaceWord(str, "Hello", "Heo");

    cout<<"After replace : "<<endl;
    cout<<str<<endl;

    cout<<""<<endl;

return 0;
}


void ReplaceWord( std::string& source, const char* WordToFind, const char* WordToReplace ){

   size_t LengthOfWordToReplace = strlen(WordToFind);
   size_t replaceLen = strlen(WordToReplace);
   size_t positionToSearchAt = 0;

   //search for the next word 
   while ((positionToSearchAt = source.find(WordToFind, positionToSearchAt)) != std::string::npos)
   {
      //replace the found word with the new word
      source.replace( positionToSearchAt, LengthOfWordToReplace, WordToReplace );

      // move to next position
      positionToSearchAt += replaceLen; 
   }
}

答案 1 :(得分:-1)

非常简单,如果要删除特定字符,只需使用“ erase()”函数。 首先,您必须输入擦除过程的开始,然后输入长度。试试这个: string s = "Hello, this is a test"; s.erase(3,1); cout << s;

答案 2 :(得分:-3)

希望您添加了#include<algorithm>,错误消息应该抱怨空字符常量。您必须使用'\0'作为空字符。

std::replace (s.begin(), s.end(), 'l', '\0'); 

由于您不熟悉编程,我会告诉您,将命名空间名称与函数一起使用而不是在代码中使用using namespace std更好(一种好的做法)。

考虑到@mindriot对此答案的评论,我更愿意提供另一种解决方案:

 s.erase( std::remove( s.begin(), s.end(), 'l' ), s.end() ) ;

您还可以查看here其他相关选项。