gpt4 book ai didi

c++ - 从字符串中删除字符

转载 作者:行者123 更新时间:2023-11-30 03:23:57 25 4
gpt4 key购买 nike

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

我的代码是:

#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)的方式有关,但我在文档中找不到任何内容。非常感谢任何帮助!

最佳答案

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

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

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

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

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

live example

关于c++ - 从字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50122498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com