2008/01/21
VCL 의 ExtractStrings 를 이용한 Tokenizing 하기
C++ 에서 문자열을 조건에 맞게 잘라쓰려면(Tokenizing) 표준 함수인 strtok 함수를 이용하면 되고, MFC를 이용할때는 CString의 Tokenize 를 이용하면 된다. VCL에서는 이 Tokenizing을 좀더 쉽고 응용하기 쉽도록 포장해 놓은 함수가 있는데 이것이 ExtractStrings 이다.
strtok나 CString의 Tokenize 를 수행하려면 루프를 돌려야 한다. 물론 예쁘게 포장해 놓은면 그럴 필요는 없겠지만...
VCL 에서는 ExtractStrings라는 함수를 기본 제공하며 이 함수를 한번 호출하면 Tokenizing이 되며 분리된 각 요소를 배열 접근하 듯 할 수 있다.
ExtractStrings 의 함수 원형은 다음과 같다.
이 함수는 4개의 인자를 받도록 되어 있다. 간단하게 설명하자면 아래와 같다.
TSysCharSet &Separators : 구분 문자 집합
문자열을 나눌 구분 문자 ( 예. 공백으로 구분 : TSysCharSet() << ' ' )
TSysCharSet &WhiteSpace : 무시할 문자 집합
이 문자로 시작된 요소의 문자열에서 무시될 문자를 제거한다.
char* Content : 조건에 맞게 구분되어질 문자열
TStrings Strings : 결과가 담겨질 변수
두번째 인자의 쓰임이 와닿지 않을때는 두번째 인자 값을 TSysCharSet() << ' ' 와 TSysCharSet() << ' ' << 'f' 를 넣어서 했을때의 결과 값을 비교하면 쉽게 이해할 수
Original Post : http://neodreamer-dev.tistory.com/41
strtok나 CString의 Tokenize 를 수행하려면 루프를 돌려야 한다. 물론 예쁘게 포장해 놓은면 그럴 필요는 없겠지만...
VCL 에서는 ExtractStrings라는 함수를 기본 제공하며 이 함수를 한번 호출하면 Tokenizing이 되며 분리된 각 요소를 배열 접근하 듯 할 수 있다.
ExtractStrings 의 함수 원형은 다음과 같다.
//함수 원형
extern PACKAGE int __fastcall ExtractStrings(
const Sysutils::TSysCharSet &Separators,
const Sysutils::TSysCharSet &WhiteSpace,
char * Content,
TStrings* Strings);
이 함수는 4개의 인자를 받도록 되어 있다. 간단하게 설명하자면 아래와 같다.
TSysCharSet &Separators : 구분 문자 집합
문자열을 나눌 구분 문자 ( 예. 공백으로 구분 : TSysCharSet() << ' ' )
TSysCharSet &WhiteSpace : 무시할 문자 집합
이 문자로 시작된 요소의 문자열에서 무시될 문자를 제거한다.
char* Content : 조건에 맞게 구분되어질 문자열
TStrings Strings : 결과가 담겨질 변수
// 사용 예
TStringList* pTokenized = new TStringList();
String strSource = "one,two|three,four| | five,,six seven";
int nSep = ExtractStrings(TSysCharSet() << ',' << '|' << ' ',
TSysCharSet() << ' ', strSource.c_str(), pTokenized);
String strMsg;
strMsg.sprintf("%d(%d) 개로 나뉘어 졌습니다.",
pTokenized->Count, nSep);
ShowMessage(strMsg);
for (int i = 0; i < pTokenized->Count; ++i)
{
// 나뉘어진 각 요소에 대한 접근
ShowMessage(pTokenized->Strings[i]);
}
두번째 인자의 쓰임이 와닿지 않을때는 두번째 인자 값을 TSysCharSet() << ' ' 와 TSysCharSet() << ' ' << 'f' 를 넣어서 했을때의 결과 값을 비교하면 쉽게 이해할 수
Original Post : http://neodreamer-dev.tistory.com/41
Labels:
C++ Builder
,
String
,
TistoryOldPost
,
Tokenizing
,
VCL
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment