간단하게 비어 있는 문자열을 "0"으로 바꾸면 됩니다.
TStringList *StrLst = new TStringList();
// 구분자를 ','로 설정한다.
StrLst->Delimiter = ',';
// 설정한 구분자로 나누어서 받을 문자열을 넣는다.
StrLst->DelimitedText = buffer;
// 구분자가 콤마(',')인 경우 위 2줄 코딩을 빼고 아래처럼 간단하게 1줄 코딩으로 써도 됩니다.
// StrLst->CommaText = buffer;
// 변환된 문자열 개수만큼 반복하여
for(int i=0; iCount; i++)
{
// 문자열에서 공백을 제거한 것이 ""이면 "0"으로 바꾼다.
if(StrLst->Strings[i].Trim() == "") StrLst->Strings[i] = "0";
}
// 변환된 문자열 리스트를 메모장에 복사한다.
Memo1->Text = StrLst->Text;
delete StrLst;
아자! 님이 쓰신 글 :
: TStringList *nn = new TStringList();
:
: ExtractStrings(TSysCharSet()<<',', TSysCharSet(), buffer.c_str(), nn)
:
: for (int i=0; i<nn->Count; i++)
: {
: Memo1->SelText = nn->Strings[i]+ "\r\n";
: }
:
: 이렇게 해서 문자열을 잘랐습니다.
: 하지만 이때 buffer에 들어오는 문자는
:
: 1. buffer = "&test,1,,,,,,5,,,,5,,6,7"
: 2. buffer = "&test,1,111,222,333,444,,5,,,,5,,6,7"
: 3. buffer = "&test,2,44,55,,,,5,,,,5,,6,7"
:
: 이런식으로 다양하게 바뀌어서 들어옵니다.
: 그래서 ,로 구분하여 문자를 자르긴 하지만 데이타가 없으면 그냥 0으로 들어가면 되는데..
: 즉,
: 1번을 자르면 buffer = "&test,1,,,5,,5,,6,7"
: test
: 1
: 0- 데이타 없는 부분
: 0- 데이타 없는 부분
: 5
: 0 - 데이타 없는 부분
: 5
: 0 - 데이타 없는 부분
: 6
: 7
:
: 이렇게 나와야하는데 위와 같이 함수를 쓰면
: test
: 1
: 5
: 5
: 6
: 7
: 이렇게 나옵니다.
: 이 부분을 처리할 방법아시는분 부탁드립니다.ㅠㅠ