0

我正在尝试创建一种从字符串中删除子字符串的方法。它是 char 形式的,所以我不能使用方便的方法来为字符串高兴地提供。我知道如何搜索它,我可以找到索引,但删除 char 对我来说有点冒险。如果有人有任何想法,我将不胜感激。谢谢。

#include "stdafx.h"
#include <iostream>
#include <cstring>


using namespace std;

char str[20];
char del[20];
char * delStorage;

char select(char);

int main()
{
    cout << "Enter a string to the console." << endl;
    cin >> str;
    cout << "You inputted " << str << " for the string." << endl;


    select(letter);

return 0;
}

char select(char letter)
{
    cout << "Enter one of the following commands d for delete." << endl;
    cin >> letter;
    switch (letter)

{
case 'D':
case 'd':
    cout << "Enter a string to delete." << endl;
    cin >> del;
    delStorage = strstr(str, del);
    if (delStorage)
    {
        cout << del << " has been found.  Deleting..." << endl;
        delStorage.Replace(str, del, "");

    }
    break;
}

我不能使用 Replace 方法,因为它是字符。char我已经尝试过嵌套循环,但由于and的不兼容而被卡住了int。如果有人有建议,我会全力以赴。再次感谢 Stack 社区。

4

1 回答 1

0

不是一个完整的答案,因为这看起来像是您想自己解决的家庭作业问题。这是一个使用低级指针的解决方案,但您可以调整它以使用迭代器。

保留一个左指针和一个右指针。正确的指针应该是const char *. 当您遍历字符串时,如果您看到子字符串的可能开头,请增加右指针而不是左指针。如果结果不是子字符串(fog, not foo),则将左指针设置为右指针并继续搜索。如果它是子字符串,则将从右指针开始的字符串复制到由左指针标记的位置,该指针现在是子字符串末尾的一个,越过子字符串。如果您到达字符串的末尾,请停止。

于 2018-07-10T01:17:08.667 回答