오늘은 문자 또는 문자열을 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]);
위 두 함수를 쌍으로 설정해 놓고 사용하시면 유연하게 사용하실 수 있습니다.
그럼~~
#c++#CStringArray#split#구현#함수
'프로그램 > C++' 카테고리의 다른 글
내 현재 폴더에 INI 파일 일고 쓰기 (0) | 2021.01.15 |
---|---|
디버깅을 위해 로그를 남길 때 사용하는 방법 (0) | 2021.01.15 |
파일(exe,dll) 의 버젼 읽기 (0) | 2021.01.15 |
해당위치에 파일 존재유무 체크 (0) | 2021.01.15 |
바탕화면에 단축아이콘 만들기 (각종) (0) | 2021.01.15 |