3
문자열에 특정 하위 문자열이 얼마나 많이 있는지를 찾는 표준 방법이나 표준 방법이 있습니까? 예를 들어 문자열의 경우 :문자열에서 여러 번 발생하는 하위 문자열 찾기 [C++]
'How do you do at ou'
문자열 "ou"가 두 번 나타납니다. 술어를 사용하거나 사용하지 않고 STL 알고리즘을 시도했지만 STL의 알고리즘이 문자열의 구성 요소를 비교하려고합니다.하지만 문자열은 내 경우에는 char이지만 비교할 수는 없습니다. 하위 문자열을 비교하십시오. 나는 이런 식으로 뭔가 함께 올 - 문자열
OBJ -
str을 문자열 우리가
std::string::size_type count_subs(const std::string& str, const std::string& obj)
{
std::string::const_iterator beg = str.begin();
std::string::const_iterator end = str.end();
std::string::size_type count = 0;
while ((beg + (obj.size() - 1)) != end)
{
std::string tmp(beg, beg + obj.size());
if (tmp == obj)
{
++count;
}
++beg;
}
return count;
}
찾고 주셔서 감사합니다.
질문 : "oooo"문자열에서 "oo"패턴을 두 번 또는 세 번 계산 하시겠습니까? (Personnaly 나는 그것을 세 번, 따라서 fo + pos pos + = str.size() 대신에 계산할 것입니다. –
그것은 내가 함수를 사용하고 싶었던 의존 할 것입니다. 질문자 자신의 코드에서, 그는 중복되지 않는 사건을 원한다. –
답변 해 주셔서 감사합니다. 논리적 오류가 있다고 생각하지만 str.find (obj, pos) 여야합니다. 어쨌든 기본적으로 STL alg를 사용할 수있는 방법은 없습니다. 명백한 루프를 피하기 위해 count_if 또는 이와 유사한 것을 사용하십시오. 동정. 부스트 팀원들이 그 문제에 대한 어떤 제조법을 가지고 있는지 궁금합니다. –