ROOT 가이드

TString tokenize 하기

Tokenize 란 문자열을 특정 구분기호로 구분하여 나누는 작업을 의미한다. 여기서 구분기호를 delim 이라고 하며, 새로 나뉘어진 문자열 하나하나를 token 이라고 한다. 가령 주어진 TString,

TString name = "green.7121.apple"​

에 대하여, 마침표 "."를 구분기호로 정하면, name은 새로운 3개의 문자열 "green", "7121", "apple"로 나뉜다. 이때, delim과 token은

  • delim: 마침표 "."
  • token: "green", "7121", "apple"

이 된다.

TString 은 tokenize 기능을 Tokenize() 함수로 구현하였고 다음과 같이 사용한다.

TString name = "green.7121.apple";
TObjArray *tokens = name.Tokenize(".");

TString token0 = ((TObjString *) tokens -> At(0)) -> GetString();
TString token1 = ((TObjString *) tokens -> At(1)) -> GetString();
TString token2 = ((TObjString *) tokens -> At(2)) -> GetString();

cout << token0 << endl;
cout << token1 << endl;
cout << token2 << endl;
green
7121
apple

 Tokenize() 의 매개변수로 delim(".")을 적으면 각 token이 TObjArray에 들어간다. TObjArray 에 들어간 문자열은 TObjString 의 형태로 들어가기 때문에 TString의 형태로 꺼내오려면 위(=아래)와 같이 가져와야 한다:

TString value = ((TObjString *) tokens -> At([인덱스])) -> GetString();

[인덱스]는 0부터 시작한다.

TObjString 은 TString을 TObjArray에 저장하기 위해서 TObject를 껍질로 사용하는 클래스다.
TObject, TObjString, TString, TObjArray 의 관계
TObject, TObjString, TString, TObjArray 의 관계

댓글

댓글 본문
작성자
비밀번호
버전 관리
ejungwoo
현재 버전
선택 버전
graphittie 자세히 보기