我正在尝试从字符串中删除特定字符,但遇到了困难。
我尝试过使用replace()并且没有任何替换字符,但编译器抱怨这一点。
string s = "Hello, this is a test";
replace (s.begin(), s.end(), 'l', '');
cout << s;
我想要的是找到并删除角色&#39; l&#39;所以输出&#34; Heo,这是一个测试&#34;。 不幸的是,我不认为replace()是正确使用的东西,而且有点难过。我们只学习了几周的编程,所以如果这是一个愚蠢的问题,我很抱歉。谢谢:))
答案 0 :(得分:0)
这是非常明确的前瞻性。如果要将 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其他相关选项。