c&c++

C/C++ 나만의 charAt() 함수 만들기

sieunju 2017. 6. 9. 01:58
반응형


안녕하세요 jsieun 입니다.


요번에 배우실것은 흔히 자바에서 charAt 라는 함수가 있는데,


예를 들면 "안녕하세요" 라는 문자열을

charAt(2) 을 하면 "하" char 형으로 얻을수가 있습니다.


대게 charAt() 라는 함수는 한단어를 따오고싶을때 사용합니다.


그럼 출력 화면을 보겠습니다.



여기서 눈여겨 봐야할것은 유니코드와 아스키 코드인데


유니코드는 쉽게 말해서 "한글"을 뜻합니다.


그리고 아스키 코드는 말그대로 "abcde123+!!" 이런 문자들을 뜻합니다.


둘이 어떤 차이점이 있냐면 아스키코드는 "1바이트" 먹는놈이고,

유니코드는 "2바이트" 먹는 놈입니다.


그래서 대게 한글을 출력하고싶을땐


char* _str ="한글입니다.";


이렇게 해서 출력을 합니다.


이런식으로 되는것이고,


소스를 보도록 하겠습니다.



아무리 생각해도 이거말고 좀더 좋은 소스가 있을거 같은데 도저히 제 현재 머리속에선 생각이 안나더군요

ㅡㅡ;;


좋은 아이디어 갖고 계신분 댓글로 쓴! 피드백  환영입니다. :D


소스해석은 별거 없습니다.


아스키 코드일때에는 2번째 CharAt 함수를 사용하는 것이고,

유니 코드일때에는 1번째 CharAt 함수를 사용하는 것입니다.


하지만 저 2개의 CharAt 함수들안에 있는 변수들중에 눈여겨 볼것은


_Value

이 변수가 메인함수에 _Output_1 과 _Output_2 의 값을 변경시켜줍니다.


즉, 인자값을 전달해준다는 의미입니다.


저는 이 알고리즘이라고 보긴 좀 그렇고 그냥 소스 중에서


가장 중요하다고 생각 되는 부분이


char _Output_2[4] = { 0 };


이거 입니다. 먼가 중요해 보이지도 않아보이긴 하지만,

옆에 "{0};" 이거 없고 있고 차이가 너무 심합니다.


그냥 배열만 선언해주고 "초기화"를 안해주면 저배열에는 쓰레기 값들이 생기게 됩니다.


좀더 멀리가서 포인터를 사용하게 되면 초기화가 얼마나 중요한지. 알게 됩니다. :D


저도 지금 "memset" 을 이용해서 포인터를 0으로 리셋시키는 것을 많이 사용하고있습니다. ㅎㅎ


아무튼!! 제가 지금까지? 코딩을 오래 하지는 않았지만, 지금까지 하면서 느낀건


"초기화" 결코 무시못하는 부분입니다.


이상 포스팅을 마치도록 하겠습니다.


감사합니다.



반응형