본문 바로가기

Programming/VC++

[C] token 사용법

 

token의 용도는 아시것 같아서...용법을 간단히 설명을 드리죠.


분리를 하고자 하는 문자열을 를 들어

char szSourceText[] = "seoul,korea,red-blue.color,333";

이라고 하죠. 함수인자로 받아도 되고, VC++을 사용하신다면 CString 변수형에 저장된것두 무관합니다.


우선

분리자를 지정을 합니다.

char seps[] = ",-\r\n";


이런 식이죠. 여기서 주의 할점은 분리자로 사용하고자 할 문자가 한개라고 해서

char sep = ','; 이런식으로 선언한다거나 하면 안됩니다.

strtok 함수 즉, 각각 분리할때 사용되는 함수가 분리자 seps의 포인터로 접근을 하는데 마직배열로 지정하지 않고 한개만 지정하면 분리자의 끝을 찾지를 못해서 제대로 실행이 안될수 있습니다..



두번째에는 각각을 토큰으로 분리된 문자열으리 포인터를 받을 변수를 지정합니다.

char *token;


세번째는 한개를 빼내 토큰으로 분리하여 빼내보죠.

token = strtok(szSourceText, seps);   = > 토큰으로 분리된 문자열의 포인터를 리턴합니다.


계속적으로 뽑아야 겠죠? 그게 목적이니깐...


while(token != NULL)  

{

    //여기에 뽑아낸 값을 계속 다른 변수에 저장하거나 또는 사용을 하는 코드를 넣으면 되겠죠...

    순서대로 seoul => korea => red => blue.color => 333값이 저장된 문자열을 포인터가 리턴되겠죠...

    만일 VC++ CString 변수에 저장을 한개씩 저장을 한다면

    strTemp.Format("%s", token);

    이렇게 하면 되구요. 여기에 break를 걸어놓구 디버깅을 해보시면 값이 하나씩 변경되어 들어오는게 보일겁니다.

    token = strtok(NULL, seps);    //토큰으로 분리할 문자가 없는경우 NULL리턴

}



간단히 설명 드렸습니당..

조금이나마 도움이 되셨길바랍니다...그럼이만..