好的,我正在做这件事并且工作正常。
end = std::find(arToken.begin() + nStart, arToken.end(), ".");
我想延长。包括 !和?所以它找到句点(。),感叹号(!)和问号(?)。
我应该在术语中使用正则表达式吗?
TIA
答案 0 :(得分:14)
你应该使用std::find_first_of
:
std::string m(".!?");
end = std::find_first_of(arToken.begin() + nStart, arToken.end(), m.begin(),m.end());
答案 1 :(得分:3)
您可以使用this。 std::find_first_of
end=arToken.find_first_of(".!?",nStart);
答案 2 :(得分:2)
使用谓词和std::find_if
这样:
struct has_char {
has_char(const char *s) : str(s) {}
bool operator() (const char ch) const {
return str.find(ch) != std::string::npos;
}
private:
std::string str;
};
end = std::find_if(arToken.begin() + nStart, arToken.end(), has_char(".!?"));