c++ - 从字符串中删除字符
问题描述
我正在尝试从字符串中删除某些字符。
我的代码是:
#include <string>
#include <iostream>
int main (int argc, char* argv[]) {
string x = "hello";
string y = "ell";
string result = x.erase( x.find(y), (x.find(y)) + y.length() - 1 );
cout << result << endl;
return 0;
}
它给出了所需的输出:
ho
但是当我将字符串更改为
#include <string>
#include <iostream>
int main (int argc, char* argv[]) {
string x = "Xx";
string y = "Xx";
string result = x.erase( x.find(y), (x.find(y)) + y.length() - 1 );
cout << result << endl;
return 0;
}
它打印出来
x
而不是什么都不想要的输出。我相信这与擦除()、查找()和长度()所有计数字符(从 0 或从 1)的方式有关,但我在文档中找不到任何内容。任何帮助是极大的赞赏!
解决方案
basic_string& 擦除(size_type index = 0,size_type count = npos);
第二个参数是计数而不是位置,所以只需使用y.length()
:
string result = x.erase( x.find(y), y.length() );
巧合的是,在您的示例中,它在第一种情况下“有效”。
推荐阅读
- javascript - React-Image-Annotate - SyntaxError:无法在模块外使用导入语句
- reactjs - React Hooks - 在依赖于 Props 的 useEffect 中重试失败的异步请求
- gradle - 无法让 Micrometer Prometheus 下载到我的 Grails 2 应用程序中
- micronaut - 自定义数据源的 Micronaut-Data 问题
- .htaccess - htaccess 将 URL 从 https://www.test.com/demo 重写为 https://www.test.com/test/demo 的问题
- reactjs - 停止值在反应为零后变为负数
- html - 如何将 div 对象与带有边界的容器并排制作?
- javascript - 单击按钮时循环遍历数组
- jenkins - 詹金斯工作 dsl 触发器不适用于自由式工作
- excel - Application.SendKeys "({1068})" 不能与 Application.OnTime 一起使用