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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[555] String 의 printf 와 sprintf
김태선 [jsdkts] 9764 읽음    2005-12-23 12:27
오늘도 날팁 올립니다. ㅡ..ㅡ;

String 클래스에는 printf 와 sprintf 메쏘드가 있습니다.
이걸 모르시는 분이 없을건데 그래도 초입자를 위해 ...
실제 플밍에서 너무나 빈번히 쓰는 것이라 한번 언급해 보는 것입니다.
C++빌더에서 String클래스는 char * 문자열 만큼 중요합니다.

String  str;
str.printf("스트링 클래스 %d 번째 임다.", count);

이거는
char   buf[101];
sprintf(buf, "스트링 클래스 %d 번째 임다.", count);
str = buf;
랑 같습니다.
str = String(buf);
이렇게 굳이 캐스팅 안해도 자동으로 다 이루어집니다.
안될 때는 에러를 내니 그때만 약간 수고하면 되죠.

또한
str = String().sprintf("스트링 클래스 %d 번째 임다.", count);
랑 같습니다.

printf 는 스트링 객체의 내용을 업데이트하는 것이고,
sprintf은 스트링 객체의 내용을 바꾸는 것이 아니라 새로 스트링을 형성해서 그 참조자를 되돌립니다.
그러므로
str = String().sprintf("스트링 클래스 %d 번째 임다.", count);
와 같은 식이 가능한 것입니다.
또는
String str2;
str2 = str.sprintf("스트링 클래스 %d 번째 임다.", count);
식도 가능한데... 이때 str 은  내용에 아무런 변화가 없게 됩니다.
단지 스트링 클래스에 대한 참조 역할만 합니다.
이렇게 하면 임시 메모리에 생성되어 다시 스트링이 복사되는 과정을 거치므로
str2.printf(...)
이렇게하는 것에 비해 메모리 낭비가 좀 있죠.
머... 전혀 지장 있는 수준은 아니지만.

Caption 같은 프로퍼티는 프로퍼티이지.. 글코 스트링 객체 자체는 아닙니다.
여기에는 해당이 안됩니다.

String 클래스는 많은 플머들의 찬사를 받았었죠.
VC++도 파워 넘치는 String 클래스가 빨리 이식되어야 할텐데...

+ -

관련 글 리스트
555 String 의 printf 와 sprintf 김태선 9764 2005/12/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.