我正在尝试从字符串中删除某些字符。
我的代码是:
#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
而不是所需的输出。我认为它与erase(),find()和length()所有计数字符(从0或从1)的方式有关,但我无法在文档中找到任何内容。非常感谢任何帮助!
答案 0 :(得分:2)
的basic_string&安培; erase(size_type index = 0,size_type count = npos);
第二个参数是count not position,所以只需使用y.length()
:
string result = x.erase( x.find(y), y.length() );
它在第一种情况下“起作用”,巧合的是你的例子。