C++ 从C+中的字符数组中删除字符+;

C++ 从C+中的字符数组中删除字符+;,c++,char,switch-statement,erase-remove-idiom,C++,Char,Switch Statement,Erase Remove Idiom,我正在尝试创建一种从字符串中删除子字符串的方法。它是char格式的,所以我不能使用方便的方法,而这些方法是愉快地提供给字符串的。我知道如何搜索它,我可以找到索引,但删除字符对我来说有点冒险。如果有人有任何想法,我将不胜感激。谢谢 #include "stdafx.h" #include <iostream> #include <cstring> using namespace std; char str[20]; char del[20]; char * delSt

我正在尝试创建一种从字符串中删除子字符串的方法。它是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;
}
#包括“stdafx.h”
#包括
#包括
使用名称空间std;
char-str[20];
chardel[20];
字符存储;
字符选择(char);
int main()
{
cout-str;

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


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

此处有许多与您的应用程序无关的代码问题。您肯定会想到在数组中向左移动字符;为什么不尝试实现它?
delStorage.Replace(str,del,”)这是什么代码?什么是“代码>替换< /代码>?它是字符形式的,所以我不能用方便的方式来给字符串。”不正确。“代码> STD::移除< /代码> STL算法也适用于字符数组。谢谢你的提示,正如你可以说我是新到C++ + PaulMcKeZeIe。