c ++ vectors - 使用find(开头,结尾,术语)

时间:2009-10-05 20:15:38

标签: c++ vector find

好的,我正在做这件事并且工作正常。

end = std::find(arToken.begin() + nStart, arToken.end(), ".");

我想延长。包括 !和?所以它找到句点(。),感叹号(!)和问号(?)。

我应该在术语中使用正则表达式吗?

TIA

3 个答案:

答案 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)

您可以使用thisstd::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(".!?"));