使用strlen删除字符串中的指定单词

时间:2016-10-16 11:23:33

标签: c++ string

使用以下函数,我可以传入两个字符串(char * hide,char * phrase)。 *短语是整体字符串,* hide是必须通过用' *'替换单词中的所有字母来审查单词(可以重复)。它目前的工作原理是它继续找到* hide的第一个字母,然后是* hide字的第二个字母,尽管它在字符串中不是彼此相邻的例如。

*phrase = 'hello my name is'

*hide = 'lame'

result = 'he*lo my n*** is'

    {
        int i, j=0;
        int lengthPhrase = strlen(phrase);
        int lengthCensor = strlen(hide);
        for (i = 0; i < lengthPhrase; i++) {
            if (phrase[i] == hide[j]) {
                phrase[i] = '*';
                j++;
                }
            }
        }

问题出在哪里,以便通过敲出整个单词来正常工作?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

由于我似乎无法理解您的问题,因此我想为您制作一个功能,看看这是否是您正在寻找的:

    string phrase = "hello my name is"

    string hide = "lame"    

    //strikeout function
    void strikeout(string phrase, string hide)
    {
        for (int i = 0; i < hide.size(); i++)
        {
            for (int j = 0; j < phrase.size(); j++)
            {
                if (hide[i] == phrase[j])
                {
                    phrase[j] = '*';
                }
            }
        }
        cout << phrase << endl;
    }

根据您的测试用例输出:&#34; h *** o * y n ***是&#34;