векторы C ++ - Использование find (начало, конец, термин) - PullRequest
2 голосов
/ 06 октября 2009

Хорошо, я делаю это, и все отлично работает.

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

Я хочу продлить. включать ! а также ? поэтому он находит точки (.), восклицательный знак (!) и знак вопроса (?).

Должен ли я использовать регулярное выражение в этом термине?

TIA

Ответы [ 3 ]

14 голосов
/ 06 октября 2009

вы должны использовать std::find_first_of:

std::string m(".!?");
end = std::find_first_of(arToken.begin() + nStart, arToken.end(), m.begin(),m.end());
3 голосов
/ 06 октября 2009

Вы можете использовать это . std::find_first_of

end=arToken.find_first_of(".!?",nStart);
2 голосов
/ 06 октября 2009

используйте предикат и 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(".!?"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...