오늘은 문자 또는 문자열을 split 하는 방법에 대해 설명합니다.


보통 자바스크립트나 자바 등에서는 쉽게 제공이 되지만 C++에서는 직접 구현을 해줘야 합니다.


여러군데에서 설명나온걸 마니 보았지만 실제 업무에서 적용되어서 운영되는 것인지 명확하지 않기 때문에 제가 현재 사용하고 있는 함수를 공개합니다.


* 문자단위의 split


int Util::Split(LPCTSTR lpszExpression, TCHAR chDelimiter, CStringArray &result)

{

int nCount = 0;

CString strSub;


while (AfxExtractSubString(strSub, lpszExpression, nCount++, chDelimiter)){

strSub.TrimLeft();

strSub.TrimRight();

result.Add(strSub);

}

return nCount;

}



위 함수는 하나의 문자에 대해 분할할 때 사용합니다. 걀과는 CStringArray 로 전달됩니다.
그리고 return 은 분할 된 개수입니다.

* 사용법
CStringArray protocol_array;
m_util.Split(card_confirm_protocol, '*', protocol_array);
    AfxMessageBox(protocol_array[0]);

아주 쉽죠..

* 문자열의 split

int Util::Splits(CString string, CString sep, CStringArray& array)
{

int nCount = 0;
while (string.GetLength() > 0){
int Pos = string.Find(sep);
if (Pos != -1){
array.Add(string.Left(Pos));
string = string.Mid(Pos + sep.GetLength());
nCount++;
if(string.IsEmpty()){
array.Add("");
nCount++;
}else{
array.Add(string);
string = "";
nCount++;
}
}
return nCount;

}

위 함수는 문자열을 분할할 때 사용합니다.
기존 인터넷에 설명이 나온것 중에 특정문자열에 대해 분할이 정상적으로 이루어 지지 않는 것들이 좀 있는데 
위 함수는 그것까지 정상처리되도록 작업이 된 함수입니다.


* 사용법

          CStringArray str_array; 

m_util.Splits(is_parm, "||||", str_array);
                AfxMessageBox(str_array[0]);


위 두 함수를 쌍으로 설정해 놓고 사용하시면 유연하게 사용하실 수 있습니다.

그럼~~










안녕하세요~~ 


드디어 티블로거가 되었습니다. 너무너무 고대하던 날이네요~ ^^


www.tistory.com 에서 초대장받기 를 통해서 여러 블로거님게 신청을 하였습니다.


근데 진짜 주실줄... ㅜ.ㅜ  


지나의일상(http://jinashenghwa.tistory.com) 님께서 주셨는데 너무 감사드려요..


앞으로 열심히 블로깅을 하도록 하겠습니다.


다른 분들도 초대장을 받고 싶으시면 꼭 지인을 통해서가 아니라 ...


www.tistory.com 에서 초대장받기 를 통해서서도 가능하다는 사실~~

'시스템' 카테고리의 다른 글

저의 블로그에서 C++ 은 VC++ 6.0 입니다.  (0) 2016.09.29




+ Recent posts