CString temp = "2,30,100,2"; // 자를 문자열 ( ", "의 갯수는 변할 수 있다.)
CString strTok;
int sepCount = GetFindCharCount(temp, ','); // " , " 의 갯수를 세어온다.
CString* temp1 = new CString[sepCount+1]; // 구해온 갯수만큼 동적 배열을 할당(CString배열)
int cnt=0;
while(AfxExtractSubString(strTok, temp, cnt, ',')) // 문자를 잘라준다. (AfxExtractSubString = strTok)
temp1[cnt++] = strTok; // 해당 배열에 순차적으로 넣어준다.
for(int i=0; i<sepCount+1; i++)
cout << (LPCSTR)temp1[i] << endl; // 화면에 출력한다.
요렇게... 간단하게 예를 들자면,
CString str = "192.168.0.1";
CString strA, strB, strC, strD;
AfxExtractSubString(strA, str, 0, '.'); // strA == "192"
AfxExtractSubString(strB, str, 0, '.'); // strB == "168"
AfxExtractSubString(strC, str, 0, '.'); // strC == "0"
AfxExtractSubString(strD, str, 0, '.'); // strD == "1"
=========================================================================================
// devide_index값이 -1이라면 데이터에 ','값이 존재하지 않는것이므로
// 함수를 종료한다.
if(devide_index == -1) return;
// 찾았다면 devide_index 다음 인덱스부터 검색을 하기 위해 devide_index++하여준다.
devide_index++;
if(devide_count == 2){
// devide_count 값이 2라면 내가 원하는 위치의 데이터를 찾은 것이므로
// 데이터의 남은 길이만큼 for문을 돈다.
for(i = 0; i < str_length - devide_index; i++){
// 데이터를 얻어 temp_data 저장한다.
temp_data = data.GetAt(devide_index+i);
// temp_data값이 ','값이 temp_data를 temp[i]에 저장한다.
if(temp_data != ',') temp[i] = temp_data;
else {
temp[i] = 0;
MessageBox(temp);
return;
}
}
}
}
CString strTok;
int sepCount = GetFindCharCount(temp, ','); // " , " 의 갯수를 세어온다.
CString* temp1 = new CString[sepCount+1]; // 구해온 갯수만큼 동적 배열을 할당(CString배열)
int cnt=0;
while(AfxExtractSubString(strTok, temp, cnt, ',')) // 문자를 잘라준다. (AfxExtractSubString = strTok)
temp1[cnt++] = strTok; // 해당 배열에 순차적으로 넣어준다.
for(int i=0; i<sepCount+1; i++)
cout << (LPCSTR)temp1[i] << endl; // 화면에 출력한다.
delete[] temp1;
요렇게... 간단하게 예를 들자면,
CString str = "192.168.0.1";
CString strA, strB, strC, strD;
AfxExtractSubString(strA, str, 0, '.'); // strA == "192"
AfxExtractSubString(strB, str, 0, '.'); // strB == "168"
AfxExtractSubString(strC, str, 0, '.'); // strC == "0"
AfxExtractSubString(strD, str, 0, '.'); // strD == "1"
=========================================================================================
안녕하세요...
CString의 멤버 함수에 보면 Find 함수와 GetAt 함수를 이용하시면 원하시는
기능을 구현하실 수 있습니다.
아래와 같이 예제를 작성해 보았습니다.
기능을 구현하실 수 있습니다.
아래와 같이 예제를 작성해 보았습니다.
CString data;
char temp[20];
char temp_data;
int devide_count = 0, devide_index = 0;
int str_length = 0;
char temp[20];
char temp_data;
int devide_count = 0, devide_index = 0;
int str_length = 0;
data = "abcd,123,efgh,456,ijk,";
str_length = data.GetLength();
str_length = data.GetLength();
for(int i = 0; i < str_length; i++){
// 데이터에서 ',' 값을 찾아 위치 값을 얻는다.
devide_index = data.Find(',', devide_index);
// 데이터에서 ',' 값을 찾아 위치 값을 얻는다.
devide_index = data.Find(',', devide_index);
// devide_index값이 -1이라면 데이터에 ','값이 존재하지 않는것이므로
// 함수를 종료한다.
if(devide_index == -1) return;
// 찾았다면 devide_index 다음 인덱스부터 검색을 하기 위해 devide_index++하여준다.
devide_index++;
devide_count++;
if(devide_count == 2){
// devide_count 값이 2라면 내가 원하는 위치의 데이터를 찾은 것이므로
// 데이터의 남은 길이만큼 for문을 돈다.
for(i = 0; i < str_length - devide_index; i++){
// 데이터를 얻어 temp_data 저장한다.
temp_data = data.GetAt(devide_index+i);
// temp_data값이 ','값이 temp_data를 temp[i]에 저장한다.
if(temp_data != ',') temp[i] = temp_data;
else {
temp[i] = 0;
MessageBox(temp);
return;
}
}
}
}