오늘도 날팁 올립니다. ㅡ..ㅡ;
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 클래스가 빨리 이식되어야 할텐데...
|