나는 boost :: tokenizer를 찾았으며 문서가 매우 얇음을 발견했습니다. "돌고래 - 원숭이 - 비비"와 같은 문자열을 토큰 화하고 모든 단어를 토큰으로 만들 수 있으며 모든 이중 대시를 토큰으로 만들 수 있습니까? 예제에서 나는 단 한 문자 구분 기호가 허용되는 것을 보았습니다. 라이브러리가 더 복잡한 구분 기호를 사용하기에 충분하지 않습니까?문자열 구분 기호와 함께 boost :: tokenizer 사용
답변
원하는대로하려면 TokenizerFunction을 작성해야합니다.
나는 본다. 미리 만들어진 물건이 있기를 바랬지 만 너무 많이하기를 바라고 있었던 것 같습니다. – Martin
하나의 옵션은 boost :: regex를 시도하는 것입니다. 맞춤형 토크 나이저와 비교하여 성능이 확실하지 않습니다.
std::string s = "dolphin--monkey--baboon";
boost::regex re("[a-z|A-Z]+|--");
boost::sregex_token_iterator iter(s.begin(), s.end() , re, 0);
boost::sregex_token_iterator end_iter;
while(iter != end_iter)
{
std::cout << *iter << '\n';
++iter;
}
좋은 소식입니다. 작동하면 내 표가 붙습니다. :) –
iter_split을 사용하면 여러 문자 토큰을 사용할 수 있습니다. 아래 코드는 생성 할 것이다 다음
돌고래
월 키
원숭이
#include <iostream>
#include <boost/foreach.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/iter_find.hpp>
// code starts here
std::string s = "dolphin--mon-key--baboon";
std::list<std::string> stringList;
boost::iter_split(stringList, s, boost::first_finder("--"));
BOOST_FOREACH(std::string token, stringList)
{
std::cout << token << '\n'; ;
}
전체 문자열의 사본을 만드는 단점이 있습니다. 토큰 화 된 문자열이 크면 문제가됩니다. 부스트 토크 나이저는 이것을하지 않습니다. –
나는 테마가 꽤 오래 알고 있지만 구글에서 상위 링크에 표시됩니다 I 때
:그래서 난 단지의 경우, TokenizerFunction 내 변형을 추가합니다 검색 "문자열 토크 나이 강화"
우리가
boost::tokenizer<FindStrTFunc> tok("some input...some other input");
을 만들고
구현이 이상적이지 않습니다 (버그가있을 수 있음). 단지 예일뿐입니다. – Alek86
- 1. 공백 구분 기호와 최대 길이를 사용하여 문자열 분할
- 2. Boost :: 분리 문자로 전체 문자열 사용
- 3. 구분 기호가있는 구분 문자열 # @ #
- 4. 누구나 boost :: logger와 함께 boost :: singleton을 사용 했습니까?
- 5. boost :: asio :: async_read를 stdin과 함께 사용 하시겠습니까?
- 6. VBScript에서 최소한의 구분 기호와 시간대를 사용하여 datetime을 포맷하는 방법은 무엇입니까?
- 7. java string tokenizer
- 8. 구분 된 문자열
- 9. 문자열 형식 구분
- 10. Python의 문자열 구분 기호
- 11. 파이썬의 문자열 구분
- 12. Tokenizer 효율성 질문
- 13. Regex를 사용하는 간단한 C# Tokenizer
- 14. boost :: wait boost :: condition 올바른 사용 :
- 15. boost :: variant 사용
- 16. LookAhead를 사용하는 Lucene Tokenizer
- 17. 전체 텍스트 용 Tokenizer
- 18. 좋은 텍스트 Tokenizer 라이브러리
- 19. C#의 Tokenizer?
- 20. 단락에서 구분 된 문자열 추출
- 21. UTF-8 문자열 구분 기호
- 22. 가변 길이로 구분 된 문자열
- 23. boost :: lambda를 std :: find_if와 함께 사용하는 방법?
- 24. boost :: unordered_map과 함께 boost :: pool_allocator를 사용하는 구문은 무엇입니까?
- 25. boost :: bind를 boost :: bind와 함께 사용하면 무한 루프에서 프로그램이 중단됩니다.
- 26. SQL 2008 - 파이프 구분 문자열 분할
- 27. 문자열 C#에서 구분 기호로 분리/ASP.Net
- 28. 문자열의 다른 기호와 일부 기호를 분리하십시오.
- 29. 더하기 기호와 십진수를 포함하는 정규식
- 30. 파이썬 : 구분 기호 목록으로 문자열 분할
이이 커뮤니티 위키를 표시하는 이유 그냥 궁금 토크 나이 일반적인 부스트처럼 사용할 수 있습니다 후? –
다른 사람들이 조금 분산되어있는 경우 제 질문을 명확히 할 수 있다고 생각했습니다. 아마도 나는 다음 번엔 그것이 무엇인지에 관해 읽을 것입니다. – Martin