ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [게임알고리즘] 5-1강 문자열
    [DSU] 게임알고리즘 2026. 4. 3. 23:16
    728x90

    C/C++에서 문자열의 특징

     

    char s[10] = "Hi";

     

    1. "문자열"로 배열 초기화 가능

    char s[10] = { 'H', 'i', '\0' };

     

    2. 모든 문자열의 끝은 0

    char s[10] = "Hi\0 world";

    std::cout << s; 혹은 printf(s); 호출시 Hi가 출력

     

    3. 버퍼 크기 10 / 문자열의 길이 2 / 사용량 3

    다른 예를 들면,

    const char* s0 = "Hi world";

    char s1[10] = "Hi world ";

    printf("%s\n", sizeof(s0)); // 주소값의 크기, 32bit 시스템 4, 64bit 시스템 8 출력됨. 

    printf("%s\n, sizeof(s1)); // 버퍼 크기 10

     

    4. 그 외 살펴보기

    // 1 비교
    #define uint32 unsigned int
    typedef unsigned int uint32;

    // 2 비교
    #include <> vs ""

    // 3 비교
    delete[] tmp vs delet tmp

     

    // 4 타입
    // void 및 void*

     

    C/C++ 자주 사용되는 기본함수 구현

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    namespace STD {
        
        typedef unsigned int uint32;
        
        // 문자열의 길이 구하기 
        uint32 strlen(const char* s)
        {
    #if 0
            int i;
            for(i=0; ; i++)
            {
                if( s[i]==0 )
                    return i;// break;
            }
            return -1;// 0xffffffff
    #else
            int i;
            for(i=0; s[i]; i++) ;
            return i;
    #endif
        }
        
        // 문자열 복사
        void strcpy(char* dst, const char* src)
        {
            int i;
            for(i=0; src[i]; i++)
                dst[i] = src[i];
            dst[i] = 0;
        }
        
        // 문자열 비교(return: 같을때는 0, 다를때는 1)
        int strcmp(const char* dst, const char* src)
        {
            int i;
            for(i=0; src[i]; i++)
            {
                if( dst[i]!=src[i] )
                    return 1;
            }
            if( dst[i] )
                return 1;
            return 0;
        }
        
        // 문자열 연결
        void strcat(char* dst, const char* src)
        {
            int len;
            for(len=0; dst[len]; len++) ;
            
            int i;
            for(i=0; src[i]; i++)
                dst[len + i] = src[i];
            dst[len + i] = 0;
        }
        
        // 문자열 뒤짚기
        void reverse(char* str)
        {
            int len = strlen(str);
            int num = len / 2;
            for(int i=0; i<num; i++)
            {
                char t = str[i];
                str[i] = str[len-1-i];
                str[len-1-i] = t;
            }
        }
        
        // 메모리 초기화
        void memset(void* dst, int value, int size)
        {
            char* d = (char*)dst;
            for(int i=0; i<size; i++)
                d[i] = value;
        }
        
        // 메모리 복사
        void memcpy(void* dst, const void* src, int size)
        {
            char* d = (char*)dst, * s = (char*)src;
            for(int i=0; i<size; i++)
                d[i] = s[i];
        }
    }
    cs

     

    매일매일 열심히 게임개발하고 있습니다

Designed by Tistory.