C++ 从字符串中删除字符

C++ 从字符串中删除字符,c++,C++,为了从给定字符串中删除字符集,我实现了这个函数 void removeChars (string& str, const string& chars) { vector <bool> v (256, false); for (int i=0; i < chars.size(); ++i) { v[chars[i]] = true; } int k=0; for (int j=0

为了从给定字符串中删除字符集,我实现了这个函数

    void removeChars (string& str, const string& chars)
{
    vector <bool> v (256, false);
    for (int i=0; i < chars.size(); ++i)
    {
            v[chars[i]] = true;

    }

    int k=0;

    for (int j=0; j < str.size(); ++j)
    {
            if (v[str[j]]==false)
            {
                    str[k] = str[j];
                    ++k;
            }

    }
    str[k] = '\0';

}
现在打印s1

ying o emove chas fom sing string
Expected : ying o emove chas fom sing

此实现中是否有任何错误。

使用STL算法,您不必重新实现所有内容:)

字符串文本(“试图从字符串中删除字符”);
char toRemove[]=“tr”;
for(无符号整数i=0;istd::cout使用STL算法,您不必重新实现所有内容:)

字符串文本(“试图从字符串中删除字符”);
char toRemove[]=“tr”;
for(无符号整数i=0;istd::cout使用STL算法,您不必重新实现所有内容:)

字符串文本(“试图从字符串中删除字符”);
char toRemove[]=“tr”;
for(无符号整数i=0;istd::cout使用STL算法,您不必重新实现所有内容:)

字符串文本(“试图从字符串中删除字符”);
char toRemove[]=“tr”;
for(无符号整数i=0;istd::cout您不应该为
std::string
添加终止符字符,它以其他方式跟踪字符串结尾


与其直接修改
str
,我建议您在新字符串中添加字符,然后在完成后将该字符串复制到
str

您不应该为
std::string
添加终止符,它会以其他方式跟踪字符串结尾


与其直接修改
str
,我建议您在新字符串中添加字符,然后在完成后将该字符串复制到
str

您不应该为
std::string
添加终止符,它会以其他方式跟踪字符串结尾


与其直接修改
str
,我建议您在新字符串中添加字符,然后在完成后将该字符串复制到
str

您不应该为
std::string
添加终止符,它会以其他方式跟踪字符串结尾



与其直接修改
str
,我建议您在新字符串中添加字符,然后在完成后将该字符串复制到
str

使用
str.resize(k)而不是
str[k]='\0'

使用
str.resize(k)而不是
str[k]='\0'

使用
str.resize(k)而不是
str[k]='\0'

使用
str.resize(k)而不是
str[k]='\0'

问题出在哪里?我没有看到任何明显的“垃圾价值观”?如果您同时描述您正在获得的输出和您期望在报告中更新的输出,这会有很大帮助question@DeveshAgrawal添加
str.erase(k)位于RemoveChars函数的末尾。有什么问题?我没有看到任何明显的“垃圾价值观”?如果您同时描述您正在获得的输出和您期望在报告中更新的输出,这会有很大帮助question@DeveshAgrawal添加
str.erase(k)位于RemoveChars函数的末尾。有什么问题?我没有看到任何明显的“垃圾价值观”?如果您同时描述您正在获得的输出和您期望在报告中更新的输出,这会有很大帮助question@DeveshAgrawal添加
str.erase(k)位于RemoveChars函数的末尾。有什么问题?我没有看到任何明显的“垃圾价值观”?如果您同时描述您正在获得的输出和您期望在报告中更新的输出,这会有很大帮助question@DeveshAgrawal添加
str.erase(k)在RemoveChars函数的末尾。我很感谢您的回答。但它被要求修改原始字符串。不允许有额外的空间。@DeveshAgrawal那么您可能会对的方法感兴趣。我很感激您的回答。但它被要求修改原始字符串。不允许有额外的空间。@DeveshAgrawal那么您可能会对的方法感兴趣。我很感激您的回答。但它被要求修改原始字符串。不允许有额外的空间。@DeveshAgrawal那么您可能会对的方法感兴趣。我很感激您的回答。但它被要求修改原始字符串。不允许有额外的空间。@DeveshAgrawal那么您可能对的方法感兴趣。它与resize(k)一起工作很好。我的想法是不应该调整大小(k-1)?因为在第k个位置没有字符。调整大小(k)可以正常工作。我的想法是不应该调整大小(k-1)?因为在第k个位置没有字符。调整大小(k)可以正常工作。我的想法是不应该调整大小(k-1)?因为在第k个位置没有字符。调整大小(k)可以正常工作。我的想法是不应该调整大小(k-1)?因为在第k个地方没有字符。
ying o emove chas fom sing string
Expected : ying o emove chas fom sing
string text("trying to remove chars from string");
char toRemove[] = "tr";

for (unsigned int i = 0; i < strlen(toRemove); ++i)
    text.erase(std::remove(text.begin(), text.end(), toRemove[i]), text.end());

std::cout << text << std::endl;