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