从字符串中删除字符

时间:2018-05-01 19:18:43

标签: 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

而不是所需的输出。我认为它与erase(),find()和length()所有计数字符(从0或从1)的方式有关,但我无法在文档中找到任何内容。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您使用std::string::erase

的第一个变体
  

的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() );

它在第一种情况下“起作用”,巧合的是你的例子。

live example