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

时间:2018-07-10 01:10:26

标签: c++ char switch-statement erase-remove-idiom

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

import shutil
import os
src = r'C:\folderA'
dst = r'C:\folderB'

for root, subdirs, files in os.walk(src):
    for file in files:
        path = os.path.join(root, file)
        shutil.move(path, dst)

由于它具有个性,所以我不能使用Replace方法。我已经尝试了嵌套循环,但是由于#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; } char的不兼容而陷入困境。如果有人有建议,我会全神贯注。再次感谢Stack社区。

1 个答案:

答案 0 :(得分:0)

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

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