我想删除给定字母的出现次数

时间:2018-02-16 08:46:04

标签: c++

我试图在选择一个单词后删除用户输入字母的出现,但是最终输出打印出一个随机的字母和数字字符串而不是我预期的字符串。例如,如果用户输入文本“Coffee”然后继续输入字母“f”,则程序应返回“Coee”作为最终打印。然而,这种情况并非如此。任何人都可以检查我哪里出错了?很有责任。

#include <iostream>
#include <string>

using namespace std;

void removeAllOccurrence(char text[], char letter)
{
int off;
int i;
i = off = 0;
    if (text[i] == letter)
    {
        off++;
    }
    text[i] = text[i + off];
}

int main() {

string text;
char letter;
string newText;

cout << "Type your text: " << endl;
cin >> text;
cout << "Choose the letters to remove: " << endl;
cin >> letter;


cout << "your new text is: " << removeAllOccurrence << endl;
system("pause");
return 0;
}

2 个答案:

答案 0 :(得分:0)

这应该做的工作

#include <algorithm>
#include <string>
#include <iostream>

void remove_char(std::string s, char r) {
  s.erase( std::remove( s.begin(), s.end(), r), s.end()) ;
  std::cout << s << std::endl;
}

int main()
{
    std::string test = "coffee";
    char r = 'f';
    remove_char(test, r);
    return 0;
}

答案 1 :(得分:0)

如果您想手动执行此操作,请尝试以下操作:

std::string removeAllOccurrence(string text, char letter)
{
    int off;
    int i;
    i = off = 0;
    string out = "";

    for (i = 0; i < text.size(); i++)
    {
       if (text[i] != letter)
       {
           out += text[i];
       } 
   }

   return out;
 }


int main(void)
{
    string text;
    char letter;
    string newText;

    cout << "Type your text: " << endl;
    cin >> text;
    cout << "Choose the letters to remove: " << endl;
    cin >> letter;


    cout << "your new text is: " + removeAllOccurrence(text, letter) << endl;
    system("pause");
    return 0;
}

正如您所看到的,您的主要功能是正确的。你只需要将一些参数传递给函数。另外你在删除功能中错过了一个循环。如果你在main中使用string,为什么不在yur函数中使用string?你也可以在那里使用字符串

亲切的问候