在find_if算法中将 char* 转换为字符串::迭代器

converting char* to string::iterator in find_if algorithm

本文关键字:转换 字符串 迭代器 char find if 算法      更新时间:2023-10-16
string temp = "****98776rth98*76"   // An arbitrary string
string::const_itertor a = find_if( temp.cbegin(),  temp.cend(), [](string::const_itertor a){ return *a != '*'; }

我收到一个错误,说"无法将'常量字符'转换为'字符串::迭代器'。我能做什么?

std::find_if的谓词采用常量引用(或类似的东西)迭代器取消引用的内容,而不是迭代器。将谓词更改为

[](const char& a){ return a != '*'; }

或者,如果您使用 C++14,

[](const auto& a){ return a != '*'; }