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
[15175] 죄송하지만... AnsiString에는 수치연산을 하는 함수가 없습니다.
김백일 [cedar] 1349 읽음    2002-01-31 16:56
하느리 님이 쓰신 글 :
: 질문하신 내용으로 보아서 다른 것은 다 숫자연산인데, 제일 처음 것은 왜 숫자 연산을 안하고 문자열 붙이기를 하였느냐는 것 같습니다. (맞습니까 ?  ^^?)
: 이유는 간단합니다. cast연산 때문에 그렇습니다.
: 1.
:  c = a + b      // 이 경우는 AnsiString 끼리의 연산이기 때문에 +연산자가 strcat 연산을 수행
: 2.
:  c = a * 32 + b
:  // 이 경우를 보다 자세히 표현하면
:  // c = (StrToInt (a) * 32) + StrToInt (b)
:  // 이렇게 되는 이유는 32가 정수(숫자)이기 때문에 type casting이 일어나기 때문입니다.
:
: 답변이 되었는지.... ?
: 실제 AnsiString class 내부에서는 이런 일을 하기 위해 function overriding을 적용하여 동일한 연산자에 여러가지의 함수를 구현하고 있지 싶습니다.

죄송하지만... AnsiString에는 수치연산을 하는 연산이 없습니다.
AnsiString의 도움말이나 헤더파일인 dstring.h를 보시면 됩니다.

Variant의 도움말과 sysvari.h를 보시면 아래 연산이 가능하다는 것을 알 수 있습니다.


: 용준 님이 쓰신 글 :
: : AnsiString a = "2002"
: : AnsiString b = "1"
: :
: : 여기서
: : AnsiString c = a + b 이면 20021
: :
: : AnsiString c = a * 10000 + b 이면 20020001
: :
: : AnsiString c = a * 10000 + b * 100 이면 20020100
: :
: : AnsiString c = a * 32 + b 이면 64065
: :
: : 제가 볼때는 좀 이상하군요...
: : 단순한 숫자의 연산은 분명 아니군요...
: :
: : 뭐가 어떻게 되는건지 누가 설명좀 해줘요....
: :

+ -

관련 글 리스트
15153 AnsiString에서의 연산(?).... 용준 927 2002/01/30
15175         죄송하지만... AnsiString에는 수치연산을 하는 함수가 없습니다. 김백일 1349 2002/01/31
15187                 형 변환 때문이 아니라 Variant의 연산자 겹지정 때문입니다! 김백일 1341 2002/01/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.