[C++] 함수 오버로딩(Function Overloading)

안녕하세요 이번 글에서는 함수 오버로딩에 대해 알아보겠습니다. 우선 아래 코드의 문제점을 무엇일까요? swap(&c, &d);를 보시면 double형 주소를 인자로 전달합니다. 하지만 swap 함수는 int 포인트로 인자를 받으므로 “double *”가 “int *”로 형변환이 되지 않아 에러가 생깁니다. 그렇다고 아래와 같이 강제 형변환을 할 수도 없는 노릇입니다. C++에서는 같은 이름의 함수가 여러 개 올 수 있는데, 이것을 함수 오버로딩(function overloading)이라고 … Read more

[C++] 다각형 내부 판별 알고리즘(Point in polygon)

안녕하세요, 이번 글에서는 다각형(Polygon)으로 도형을 그리고 클릭 했을 때, 그 클릭한 곳이 다각형의 내부인지 외부인지 판별을 하는 알고리즘 입니다. 코드를 보기전에 우선 알고리즘 설명부터 하겠습니다.아래와 같이 5각형을 기준으로 클릭을 한다고 봅시다. 다각형 내부 클릭 다각형 외부 클릭 사람은 “내부/외부에 클릭을 했다“라고 쉽게 생각합니다. 하지만 컴퓨터의 경우엔 어떻게 알 수 있을지 고민을 해봐야합니다. Point in polygon … Read more

[C++] tolower, toupper 대소문자 변환

안녕하세요 오늘은, C++의 대소문자 변환하는 함수 tolower, toupper 함수를 알아보겠습니다.tolower, toupper함수는 인자로 1개의 아스키 코드 값을 전달 하면 해당 문자의 대소문자를 변환해 줍니다. 대문자 -> 소문자로 변환하는 tolower의 함수 원형은 아래와 같습니다. msdn에서는 tolower을 수행하기 위해서 __isascii 함수와 isupper 함수를 수행해야 개발자가 예상되는 결과를 제공한다고 합니다. msdn을 참고하여 함수를 만들면 아래와 같습니다. acStr에서 ASCII이고 대문자인 “~hELlo WorLd!”만 변환 됩니다.(굵은 글자)소문자 … Read more

[C++] _tcstol, strtol, wcstol 문자열 진수 변환

오늘은 문자열을 쉽게 2진수, 10진수, 16진수로 변경할 수 있는 _tcstol 함수에 대해 알아보겠습니다. 함수 원형은 아래와 같습니다. 오버플로우가 되면 LONG_MAX또는 LONG_MIN이 반환됩니다.3번째 인자(진수)가 2보다 작거나 32보다 크면 ERANGE , EINVAL을 반환합니다.해당 함수는 변환이 불가능하면 0을 반환합니다.  사용 예제는 아래와 같습니다. 필요 헤더파일은 아래와 같습니다. Routine Required header _tcstol <tchar.h> strtol <stdlib.h> wcstol <stdlib.h> or <wchar.h> _strtol_l <stdlib.h> _wcstol_l <stdlib.h> or … Read more

[Visual C++] 문자열에 대하여 – 유니코드, 멀티바이트

가끔 프로그램을 만들다 보면 코드상으론 한글을 잘 표시했는데, 실행시켜보면 한글이 깨져있는 경험들이 있을겁니다. 프로그램뿐만 아니라 파일에서도 분명히 한글로 저장했는데 메모장으로 열었을 때 한글이 저장되어있지 않은 경우도 있구요. 최근엔 프로젝트 생성하더라도 유니코드로 기본 설정 되는데 가끔 개발을 하다보면 멀티바이트, 와이드캐릭터 등 이야기를 할 때가 있습니다. 초기에 컴퓨터가 만들어졌을 때엔 컴퓨터는 단어 그대로 compute, 수치 연산을 하기 … Read more

[C++] namespace

처음에 개발을 배우면 아래와 같이 둘중 하나를 가지고 코딩하게 됩니다. 또는 저는 std:: 쓰는게 싫어서 using namespace std;를 많이 사용했습니다.이 namespace는 왜 쓰는 걸까요? namespace는 코드 영역을 정의하기 위해 사용합니다. 아래 코드를 보시죠. 아래의 두 Sum 함수가 있다고 합니다. 이 두 헤더 파일을 include 해서 사용하면 에러가 발생합니다. 어떤 것을 사용할지 모호 에러가 나타납니다.이럴 경우 … Read more