首页 > 解决方案 > 从字符串中删除字符

问题描述

我正在尝试从字符串中删除某些字符。

我的代码是:

#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)的方式有关,但我在文档中找不到任何内容。任何帮助是极大的赞赏!

标签: c++

解决方案


您使用std::string::erase的第一个变体

basic_string& 擦除(size_type index = 0,size_type count = npos);

第二个参数是计数而不是位置,所以只需使用y.length()

string result = x.erase( x.find(y), y.length() );

巧合的是,在您的示例中,它在第一种情况下“有效”。

活生生的例子


推荐阅读