본문 바로가기

프로그래밍/API

문자열 쪼개기, Tokenize

문자열을 어떠한 구분자에 의해 나누고 싶을 때
예를 들어, "6000,A2301BA81301,Sensor1" -> "6000" / "A2301BA81301" / "Sensor1"

1. Tokenize 이용 (.net 함수..6.0에서는 사용을 못 한다.)

CString strFullText = _T("6000,A2301BA81301,Sensor1");
CString token;
CString strPortNumber, strName, strSensor;
int pos = 0;
int index = 0;

while ((token  = strFullText.Tokenize(_T(","), pos)) != _T(""))
{
    // 6000
    if(index == 0)
    {
        strPortNumber = token;
        index++;
    }
    // A2301BA81301
    else if(index == 1)
    {
        strName = token;
        index++;
    }
    // Sensor1
    else if(index == 2)
    {
        strSensor = token;
        index++;
    }
}

2. AfxExtractSubString 이용

CString strFullText = _T("6000,A2301BA81301,Sensor1");
CString token;
CString strPortNumber, strName, strSensor;

for( int k=0; k<3; k++ )
{
    AfxExtractSubString(token, strFullText, k, ',');
    // Port에 정보 넣어준다.
    // 6000
    if(k == 0)
        strPortNumber = token;
    // A2301BA81301
    else if(k == 1)
        strName = token;
    // Sensor1
    else if(k == 2)
        strSensor = token;
}