-
[게임알고리즘] 5-3강 문자열[DSU] 게임알고리즘 2026. 4. 4. 00:04728x90
수업 시간 관계상 모두 구현하지 못했는데,
다음시간에 마무리 되는데로 이 글 업데이트 하도록 하겠습니다.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205#include <iostream>#include <stdio.h>namespace STD {typedef unsigned int uint32;uint32 strlen(const char* s);void strcpy(char* dst, const char* src);int strcmp(const char* dst, const char* src);void strcat(char* dst, const char* src);void reverse(char* str);void memset(void* dst, int value, int size);void memcpy(void* dst, const void* src, int size);}using namespace STD;struct String{char* str;int strLength;// buff sizeString(){str = NULL;strLength = 0;}//String(const char* str)//{////}virtual ~String(){if( str )delete str;}String& operator = (String& s){return *this;}String& operator = (const char* s){int len = strlen(s) + 1;if( strLength < len ){if( str )delete str;str = new char[len];strLength = len;}strcpy(str, s);return *this;}String& operator += (const char* s){strcat(str, s);return *this;}#if 0const char* operator + (const char* s){char* tmp = new char[100]; //char tmp[100];strcpy(tmp, str);strcat(tmp, s);return tmp;}#elif 0String& operator + (const char* s){String tmp;tmp = str;tmp += s;return tmp;}#endifvoid print(){printf("print(%s)\n", str);}};int main() {String string;// String& operator = (const char* s)string = "Hi";string.print();// String& operator += (const char* s)string += " World";string.print();// String& operator + (const char* s)//string = string + "Hi";//string.print();const char* str = "Hi World";//char s[12] = { 'H', 'i', '\0', };char s[12] ="Hi World";// s => "World" : &s[3]printf("test %s\n", &s[3]);// s => "Hi" : s[2] = 0;s[2] = 0;printf("test %s\n", s);//sizeof(str);// 버프의 크기 10// 문자열의 길이(사용 크기) 2// 실사용량의 크기 3 { 'H', 'i', '\0' }// 0, NULL, '\0'printf("s %d\n", STD::strlen(s));return 0;}namespace STD {uint32 strlen(const char* s)// "a" == { 'a', 0 }{//return sizeof(s) / sizeof(int);#if 0int i;for(i=0; ; i++){if( s[i]==0 )return i;// break;}return -1;// 0xffffffff#elseint 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, 다를때는 1int 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 
매일매일 열심히 게임개발하고 있습니다 '[DSU] 게임알고리즘' 카테고리의 다른 글
[게임알고리즘] 7-1강 스마트 포인터 (0) 2026.05.09 [게임알고리즘] 6강 최단경로 (0) 2026.04.10 [게임알고리즘] 5-2강 문자열 (0) 2026.04.03 [게임알고리즘] 5-1강 문자열 (0) 2026.04.03 [게임알고리즘] 4-3강 링크리스트 실습 예제 (0) 2026.03.27

