C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[465] [답변] 윈텍7/ 숫자열에서 , 를 빼는 방법/프포
박지훈.임프 [cbuilder] 5274 읽음    1998-07-22 22:06
안녕하세요. 프로그래머포럼 C++Builder 작은모임 빌더라운지 담당 임펠리테리입니다.

오늘은 여기다 바로 답변을 올리죠.. 후후...

간단하네요.. 사소한 실수를 하셨습니다.

Pos()메소드는 클래스 AnsiString의 멤버니까 AnsiString 클래스의 객체의 멤버연산자

(.)을 써서 억세스해야죠. 에러는 그것땜에 난거구요...

문자 하나를 찾기 위해서 Pos()메소드를 쓰는건 좀 그렇네요.. AnsiString의 멤버 연

산자중에 [] 연산자가 있는데, 이걸 쓰는게 훨씬 낫겠네요.

다음은 Label1에 쉼표문자를 포함한 문자열이 있을때 쉼표만 제거하기 위한 버튼의 클

릭 이벤트핸들러입니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString Str(Label1->Caption);
    int StrLen = Str.Length();
    int index = 1;
    while(index<= StrLen)
        if(Str[index] == ',')
        {
            Str.Delete(index, 1);
            --StrLen;
        }
        else
            ++index;
    Label1->Caption = Str;
}

쩝~ 잘 됩니다.. 테스트도 해봤습니다. 그런데.. 맘에 안들어서 ansi c 스타일로 한번

더 해봤습니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char *Str = new char[Label1->Caption.Length()+1];
    strcpy(Str, Label1->Caption.c_str());
    char *p = Str;
    while(*p)
        *p == ',' ? strcpy(p, p+1) : p++;
    Label1->Caption = Str;
}

이것도 테스트해봤습니다. 잘 되구요, 당연히 속도는 훨씬 빠릅니다.

아무거나 써보세요.

도움되시기를 바라면서, 이만...





독립문에서 임펠리테리였습니다.

(cbuilder, skyhi18)



+ -

관련 글 리스트
464 [질문] 숫자열에서 , 를 빼는 방법/프포 윈텍7 5059 1998/07/22
465     [답변] 윈텍7/ 숫자열에서 , 를 빼는 방법/프포 박지훈.임프 5274 1998/07/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.