다음 이전 차례

12. 첨부 A example_mychar.cpp

모든 프로그램들은 Download mychar 로 부터 하나의 tar.gz 화일로 다운로드 받을 수 있다. 이 화일을 얻으려면 웹브라우저에서 'Text' 타입으로 저장을 하면 된다.


//*****************************************************************
//저작권은 GNU/GPL 이지만 추가로 모든 복제본에 저자의 이름과 이메일을
//포함시켜주어야 한다.
//저자: Al Dev  이메일: alavoor@yahoo.com
//*****************************************************************
// 컴파일 하려면( libmychar.a가 현재 디렉토리에 있다고
// 가정하고 )
//              g++ example_mychar.cpp -L. -lmychar

#include <stdlib.h>  // for putenv
#include "mychar.h"

/////////////////////////////////////////////////
//mychar 사용 예제 프로그램
/////////////////////////////////////////////////

int main(int argc, char **argv)
{
        char p_name[1024];
        sprintf(p_name, "PROGRAM_NAME=%s", argv[0]);
        putenv(p_name);
        print_total_memsize(); // in the beginning
        mychar aa, bb;

        //bb.str_cpy("  bbSTRing  ");
        bb = "   bbSTRing   ";

        //+ 연산자 테스트하기
        //aa + " rhs "; //  여기서는 어떤 출력도 갖지 않게 될것이다 !!
        //반드시 다음줄에 나오는 것 처럼 직접 fprintf 를 사용해야 한다.
        fprintf(stdout, "\n0) aa.val is :%sEOF\n", (aa + " my rhs " ).val);

        //=연산자 테스트하기
        aa = " lhs " ;
        fprintf(stdout, "0-1) With operator= aa.val is :%sEOF\n", aa.val);

        //+ 연산자 테스트 하기 
        //aa + " rhs "; //  여기서는 어떤 출력도 갖지 않게 될것이다 !!
        //반드시 다음줄에 나오는 것 처럼 직접 fprintf 를 사용해야 한다.
        fprintf(stdout, "\n0) With lsh operator+, aa.val is :%sEOF\n", (" my lhs " + aa ).val);

        //aa.str_cpy(bb.val);
        aa = bb;
        aa.to_upper();
        fprintf(stdout, "1) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa.to_lower();
        fprintf(stdout, "2) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa.ltrim();
        fprintf(stdout, "3) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa.rtrim();
        fprintf(stdout, "4) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa.trim();
        fprintf(stdout, "5) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa = aa + " testing newlines \n\n\n\n";
        aa.chop();
        fprintf(stdout, "5-1) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa = aa + " rhs ";
        fprintf(stdout, "6) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa = " lhs " + aa;
        fprintf(stdout, "7) aa.val is :%sEOF\n", aa.val);

        // 숫자 더하기 예제
        //aa = (mychar) 9989 + "kkk" + 33 ;
        aa = 9999;
        fprintf(stdout, "7-1) aa.val is :%sEOF\n", aa.val);

        aa = bb;
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa = " AA value ";
        aa = bb + "alkja " + " 99djd " ;
        fprintf(stdout, "9) aa.val is :%sEOF\n", aa.val);

        aa = " AA value ";
        aa = (mychar) "alkja " + " 99djd " ;
        fprintf(stdout, "10) aa.val is :%sEOF\n", aa.val);

        aa = " AA value ";
        aa += (mychar) " al dev test kkk... " + " al2 slkj" + " al3333 ";
        fprintf(stdout, "11) aa.val is :%sEOF\n", aa.val);

        aa = " AA value ";
        aa = aa + " add aa " + aa + aa + aa + " 1111 " + " 2222 " + aa + aa + aa + " 3333 ";
        fprintf(stdout, "12) aa.val is :%sEOF\n", aa.val);

        aa = "12345678";
        aa.reverse();
        fprintf(stdout, "13) aa.val is :%sEOF\n", aa.val);

        aa = " AA value ";
        aa = aa + " add aa " + aa + 1111 +" "+ 2222 + " " + 3.344 + aa;
        fprintf(stdout, "14) aa.val is :%sEOF\n", aa.val);

        aa.roundd(123456.0123456789012345, 13);
        fprintf(stdout, "15) double aa.val is :%sEOF\n", aa.val);

        aa.roundf(123456.0123456789, 13);
        fprintf(stdout, "16) float aa.val is :%sEOF\n", aa.val);

        // Test equal to operators
        aa = " AA value ";
        mychar cc(" AA value ");
        if (aa == cc)
                fprintf(stdout, "\naa=%s and cc=%s are equal!!\n", aa.val, cc.val);
        else
                fprintf(stdout, "\naa=%s and cc=%s are NOT equal!!\n", aa.val, cc.val);
        cc = "CC";
        if (aa == cc)
                fprintf(stdout, "\naa=%s and cc=%s are equal!!\n", aa.val, cc.val);
        else
                fprintf(stdout, "\naa=%s and cc=%s are NOT equal!!\n", aa.val, cc.val);
        if (aa == " AA value ")
                fprintf(stdout, "\naa=%s and string are equal!!\n", aa.val);
        else
                fprintf(stdout, "\naa=%s and string are NOT equal!!\n", aa.val);
        if (aa == " AA valuexxx ")
                fprintf(stdout, "\naa=%s and string are equal!!\n", aa.val);
        else
                fprintf(stdout, "\naa=%s and string are NOT equal!!\n", aa.val);

        //aa.val 를 'char *' 변수처럼 프로그램에서 사용할 수 있다!!
        fprintf(stdout, "\n ");
        for (unsigned long tmpii = 0; tmpii < aa.length(); tmpii++)
        {
                fprintf(stdout, "aa.val[%ld]=%c ", tmpii, aa.val[tmpii]);
        }
        fprintf(stdout, "\n");

        //'char *' val ...에 포인터 사용하기
        fprintf(stdout, "\n ");

        for (char *tmpcc = aa.val; *tmpcc != 0; tmpcc++)  
        {
                // MUST use temporary var tmpcc !! See note above.
                fprintf(stdout, "aa.val=%c ", *tmpcc);
        }
        fprintf(stdout, "\n");

        print_total_memsize(); // in the end
        exit(0);
}


다음 이전 차례