프로그래밍을 하다 보면 입력 변위값에 대한 판정을 내리거나 입력받은 값의 유효성을 검사해야 될때가 많다.


예를 들어 1~100 까지의 정수만 허용이 되는데 110이 들어올때다..


물론 if문을 통해서 처리하는 방법이 가장 많이 쓰인다.


하지만 조건도 길어지고, 반복작업의 경우 지겹다;


그래서 템플릿 함수로 작성을 해봤다.


전역함수로 선언해놓고 여기저기서 끌어다 쓰면 편할듯 하다.


코드는 아래와 같다.


아.. 템플릿함수 정의는 헤더파일에서 해야한다. ( 관련글 : 

2018/07/09 - [Programming] - [C++]template 함수 사용간 error LNK2019 에러 발생 조치 방법)





template< typename type > extern bool IsInRange(type _min, type _max, type _val){ return ((_min <= _val) && (_val <= _max)); }


피라메터는 3개다. 하한값, 상한값, 체크할 값



template을 사용하여 피라메터로 들어온 값을 계산하고 피라메터로 받은 range에 따라 true/false 반환하는 함수를 만들었는데


LINK2019 에러가 자꾸 발생한다.


구글링해보니 선언만 있고 정의가 없을때 발생한다는데 .h와 .cpp에 선언과 정의 잘 되어 있는데 자꾸 에러가 나서 삽질만 반나절 했다.


점심 먹고 들어와서 다시 템플릿은 클래스가 아니다 말그대로 '틀'일 뿐이다, 라는 설명과 함께 한곳에서 선언과 정의가 이뤄저야 한다는 것이다.


이것이 뭔말이냐 하면 그냥 헤더파일에 선언과 함께 동시에 정의까지 해버리라는거다.


선언부 ( test.h)

 template< typename type > extern bool IsInRange(type _min, type _max, type _val);

정의부 (testcpp)

template< typename type > bool IsInRange(type _min, type _max, type _val)
{
	return ((_min <= _val) && (_val <= _max)); 
}

위와 같이하면 LINK2019 에러 발생한다.


따라서 아래와 같이 헤더파일에 선언 정의 동시에 해줘야 한다.


template< typename type > extern bool IsInRange(type _min, type _max, type _val){ return ((_min <= _val) && (_val <= _max)); }


물론 선언과 정의를 따로 하는 방법도 있을것이다. 


헤더에 정의를 해도 무방할정도의 짧은 코드이기 때문에 이 방법을 사용한것이다.







isalpha()

 함수형태 

 isalpha(int c)

 파라미터

 c − 확인할 문자(ASCII)

 리턴

 0 != c가 알파벳, 0 = c는 알파벳이 아님




isdigit()

 함수형태 

 isdigit(int c)

 파라미터

 c − 확인할 문자(ASCII)

 리턴

 0 != c가 숫자, 0 = c는 숫자가 아님




	CString strTest = _T("ABCDEFG01234");
	if (isalpha(strTest[2]))
	{
		// true
		// ...
	}
	else
	{
		// false
		// ...
	}
	if (isdigit(strTest[7]))
	{
		// true
		// ...
	}
	else
	{
		// false
		// ...
	}


i n v i t a t i o n

티스토리 초대장

+ 남은 초대장 수 : 05

안녕하세요!

티스토리에 보금자리를 마련하시려는 여러분께 초대장을 배포해 드리려고 합니다.

나만의, 내 생각을, 내 기억을 담는 소중한 블로그를 만들고 싶다면 티스토리로 시작해보세요!

티스토리 블로그는 초대에 의해서만 가입이 가능합니다. 원하시는 분은 댓글에 E-mail 주소를 (반드시 비밀댓글로) 남겨주시면 초대장을 보내드립니다. 남겨주실 때에는 꼭 비밀댓글로 남겨주세요!

초대장을 보내드리고 바로 개설하시지 않으신 분들은 초대장을 회수할 수도 있으니 바로 개설해주세요!

Yes
이런 분들께 드립니다!
1. 다른 블로그를 사용해보셨던 분
2. 이메일 주소가 정상적인 분
3. 블로그를 시작하려는 이유를 남겨주신 분!
No
이런 분들께 드리지 않아요!
1. 이메일 주소가 의심되는 분!
2. 이메일 주소를 남기지 않으신 분
3. 이유도 없이 달라고 하시는 분!
티스토리 이래서 좋아요!
1. 이미지, 동영상, 오디오, 파일까지! 무한 용량과 강력한 멀티미디어를 올릴 수 있어요!
2. 스킨위자드로 스킨을 내맘대로~ 거기에 기능 확장 플러그인까지!
3. 내가 원하는대로 myID.com으로 블로그 주소를 만들 수 있어요!

  1. 2018.06.27 16:59

    비밀댓글입니다

  2. 2018.06.27 17:49

    비밀댓글입니다

    • Favicon of http://lunikism.com BlogIcon Lunik 2018.06.28 08:45 신고

      발송해드렸습니다.
      좋은 블로거가 되어주세요.

  3. 2018.06.27 17:51

    비밀댓글입니다

    • Favicon of http://lunikism.com BlogIcon Lunik 2018.06.28 08:46 신고

      발송해드렸습니다.
      좋은 블로거가 되어주세요.

  4. 2018.06.27 18:13

    비밀댓글입니다

    • Favicon of http://lunikism.com BlogIcon Lunik 2018.06.28 08:45 신고

      발송해드렸습니다.
      좋은 블로거가 되어주세요.

  5. 2018.06.27 19:41

    비밀댓글입니다

    • Favicon of http://lunikism.com BlogIcon Lunik 2018.06.28 08:46 신고

      발송해드렸습니다.
      좋은 블로거가 되어주세요.

  6. 2018.06.27 20:39

    비밀댓글입니다

  7. 2018.06.27 20:42

    비밀댓글입니다

4월 Windows 업데이트 이후 디스크 목록에 800MB짜리 OEM 파티션이 보이기 시작했다.


보여도 상관없긴 하다만, 해당 디스크에 저장공간이 부족하다고 자꾸 알림이 떠서 숨기기로 하고 찾아봤다.


방법은 아래와 같다.


1. 명령 프롬프트 실행 (시작 - 실행 - CMD)


2. diskpart


3. list volume


4. select volume 지우고자 하는 드라이브 볼륨번호 (ex. 2)


5. remove letter 지우고자 하는 드라이브 문자 (ex. H)



VMware업데이트 하고 나서 기존 vm이미지를 실행하니


Version mismatch with vmx86 driver ...


이런 오류가 발생했다.


구글링 해보니 system32/driver 폴더의 vmx86.sys 파일을 지우고 재부팅 해보라는데


사용중이라고 삭제가 안된다.



vmware 재설치 하려고 삭제를 눌렀더니 repair 옵션이 보이길래 repair 진행하고 재시작 하니 다시 실행이 되어진다.


아마 업데이트 하면서 문제가 있는듯..





+ Recent posts