gpt4 book ai didi

c++ - 反向字符串 find_first_not_of

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:31 25 4
gpt4 key购买 nike

我有一个 std::string,我想找到第一个字符的位置:

  • 不同于以下所有字符:' ''\n''\t'
  • 比我指示的位置低。

因此,例如,如果我有以下 string 和位置:

string str("AAA BBB=CCC DDD");
size_t pos = 7;

我希望有可能使用这样的方法:

size_t res = find_first_of_not_reverse(str, pos, " \n\t");
// now res = 4, because 4 is the position of the space character + 1

我该怎么办?

最佳答案

正如 Bo 评论的那样,templatetypedef 的答案已经完成了 99%;我们只需要 std::string::find_last_of而不是 std::string::find_last_not_of:

#include <cassert>
#include <string>

std::string::size_type find_first_of_not_reverse(
std::string const& str,
std::string::size_type const pos,
std::string const& chars)
{
assert(pos > 1);
assert(pos < str.size());

std::string::size_type const res = str.find_last_of(chars, pos - 1) + 1;
return res == pos ? find_first_of_not_reverse(str, pos - 1, chars)
: res ? res
: std::string::npos;
}

int main()
{
std::string const str = "AAA BBB=CCC DDD";
std::string const chars = " \n\t";
std::string::size_type res = find_first_of_not_reverse(str, 7, chars); // res == 4
res = find_first_of_not_reverse(str, 2, chars); // res == npos
}

关于c++ - 反向字符串 find_first_not_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11268323/

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