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
[53262] Re:감사합니다 그런데 원리를 잘 모르겠네요..
강재호.만해 [greenuri] 1373 읽음    2008-04-24 18:33
int __fastcall Pos(const AnsiString& subStr) const;

Description

Pos returns the index in the AnsiString at which the substring subStr begins, where 1 is the index of the first character, 2 is the index of the second character, and so on. If the substring is not contained in the AnsiString, Pos returns 0.

AnsiString __fastcall SubString(int index, int count) const;

Description

SubString returns a new AnsiString that is a substring of this AnsiString. The substring contains count characters beginning at index.

위에꺼는 Pos 함수에 대한 도움말이고요,

밑에껀 SubString에 대한 도움말입니다.

AnsiString Text = "192.168.0.1";

AnsiString Head = Text.SubString(1,Text.Pos("."));
-> 이때 Head 의 값은 "192." 인데요 Pos에서는 Index를 리턴해 주기 때문에 "."이 있는곳의 인덱스를 넘깁니다.
인덱스라고 하면 4가 되는데 1에서부터 4글자를 가져오기 떄문에 "192."을 가져오는것입니다.
그렇지만 SubString(idx, length) 함수에서는 Length를 받기 때문에 index에서 1을 빼야 합니다.

AnsiString Sub = Text.SubString(1,Text.Pos("3"));
-> 이때는 Pos("3")의 결과값이 0이 되고요.
SubString(1,0)이 되므로 문자열에서 아무런 값을 가지지 않습니다.


번외편 님이 쓰신 글 :
: Edit5->Text = Text.SubString(1,Text.Pos("2"));
: 이렇게 해서 192만 빼왔습니다. 그런데 이부분에서
: Edit5->Text = Text.SubString(1,Text.Pos("."));
: 을 하면 192. 이 빠지고
: Edit5->Text = Text.SubString(1,Text.Pos("3"));
: 을 하면 192.168.10.1 이 전부 빠지는데..
:
: 어떤 규칙으로 이렇게 빠지는건지를 잘 모르겠습니다.
: 좀더 자세히 알려주셨으면 감사하겠습니다.
:
: 강재호.만해 님이 쓰신 글 :
: : 번외편 님이 쓰신 글 :
: : : 현재 상태가
: : : Label1->Capture=IP_List->Strings[ 0 ];
: : : 이렇게 했을때 Label1에 192.168.10.1이 뜨게 됩니다
: : :
: : : 그런데 이중에 제가 필요한 부분은 192 <-- 이부분만 필요한데
: : : 어떻게 해야지 이부분만을 빼올수가 있는지 알고 싶습니다.
: : : Label2->Capture=IP_List->Label1->Capture[??????];
: : : 이런식으로 빼야 할까요?
: :
: : AnsiString 형의 부과 함수들 중에서 SubString() 함수와 Pos() 함수를 이용하시면 원하는 걸 해결 할수 있을것 같은데요.
: :
: : AnsiString Text = IP_List->Strings[0];
: : Text = Text.SubString(1,Text.Pos("."));
: :
: : 이런식으로 하시면 가능할것 같습니다.
: :
: : 더 자세한 내용은 헬프 참고 하세요 ^^

+ -

관련 글 리스트
53254 질문이 있습니다~ 번외편 1160 2008/04/24
53256     strtok를 사용하세요. 조대현.Clau 1751 2008/04/24
53261         감사합니다 많은 도움 되었습니다. 번외편 1456 2008/04/24
53255     Re:질문이 있습니다~ 강재호.만해 1149 2008/04/24
53258         감사합니다 그런데 원리를 잘 모르겠네요.. 번외편 1222 2008/04/24
53262             Re:감사합니다 그런데 원리를 잘 모르겠네요.. 강재호.만해 1373 2008/04/24
53265                 많은 도움 되었습니다. ^^ 번외편 1284 2008/04/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.