본문 바로가기

Software95

[C++/MFC] CString 다양한 기능들 정리 CString은 MFC에서 문자열을 처리를 아주 쉽게 처리할 수 있도록 제공해주는 클래스라서 내장된 기능이 어마어마 합니다. 사용법만 알면 간단히 사용할 수 있도록 만들어 두었는데 그 내부를 보면 사용하는것 만큼 간단하지는 않습니다. 그 많은 기능들을 최적화해서 (물런 네이티브 문자열 처리에 비해 속도가 느리기는 함) 제공하기 위해서는 상당히 복잡한 구조로 되어있습니다. 언제나 처럼 저는 복잡한 내부구조는 관심없고, 쉽게 쓸수만 있으면 그만입니다. ㅎ 문자를 자르고 붙이고 뭐 이런건 이본이고 그외에도 다양한 기능을 CString 자체에서 할수 있으니 MFC를 사용한다면 어떤 기능들이 있는지 알아둘 필요는 있을 것 같습니다. 다는 아니지만 음 이정도는 내가 써볼만 하겠다 하는 기능들만 모아봤습니다. CSt.. 2018. 12. 3.
isalum / iswalnum / _ismbcalnum / _istalnum - 정수값이 영어,숫자인지 확인 isalum, iswalnum, _ismbcalnum, _istalnum 용도 확인하고자 하는 문자의 정수값이 영어나 숫자를 나타내는지를 확인 구문 #include int isalnum(int c); int iswalnum(wint_t c); int _isalnum_l(int c, _locale_t locale); int _iswalnum_l(wint_t c, _locale_t locale); #include int iswalnum(wint_t c); int _iswalnum_l(wint_t c, _locale_t locale); #include int _ismbcalnum(unsigned int c); #include int _istalnum(_TINT c); 매개변수 c 확인할 문자의 정수값 loca.. 2018. 11. 30.
isalpha / iswalpha / _ismbcalpha / _istalpha - 정수값이 영문자인지 확인 isalpha, iswalpha, _ismbcalpha, _istalpha 용도 확인할 정수값이 영문자(alphabet)인지 확인 구문 #include int isalpha(int c); int iswalpha(wint_t c); int _isalpha_l(int c, _locale_t locale); int _iswalpha_l(wint_t c, _locale_t locale); #include int iswalpha(wint_t c); int _iswalpha_l(wint_t c, _locale_t locale); #include int _istalpha(_TINT c); 매개변수 c 확인할 문자의 정수값 locale locale 반환 문자의 정수값이 A~Z, a~z 의 영문자인경우 nonzero를 .. 2018. 11. 30.
_strinc / _stcsinc / _mbsinc / _wcsinc - 바로뒤의 문자 포인터 반환 _strinc, _stcsinc, _mbsinc, _wcsinc 용도 바로 뒤에 따라오는 문자의 포인터 반환 구문 #include char *_strinc(const char *current, _locale_t locale); #include unsigned char *_mbsinc(const unsigned char *current); #include wchar_t *_wcsinc(const wchar_t *current, _locale_t locale); 매개변수 current 문자 포인터 locale 사용할 locale 반환 current 바로 다음위 문자 포인터 추가설명 current 매개변수의 문자에서 바로 다음에 있는 문자의 포인터를 반환하는 함수입니다. "_strinc"처럼 "locale"매.. 2018. 11. 30.
isspace / iswspace / _ismbcspace / istspace - 정수값이 공백문자인지 확인 isspace / iswspace / _ismbcspace / istspace 용도 파라미터의 정수값이 공백문자인지 확인 구문 #include int isspace(int c); int iswspace(wint_t c); #include int istspace(_TINT c); 매개변수 c 확인하고자 하는 정수값 반환 확인한 정수값이 공백문자에 해당된다면 nonzero를 반환 추가설명 T캐릭터 함수를 사용하면 아래와 같이 호출됩니다. 미정의시: isspace _MBCS 정의시: _ismbcspace _NICODE 정의시: iswspace 끝! 2018. 11. 30.
strncmp / wcsncmp / _mbsncmp / _tcsncmp - 지정크기만큼 문자열 비교 strncmp, wcscmp, _mbsncmp, _tcsncmp 용도 두 문자열을 지정한 수(크기) 만큼만 비교 구문 #include int strncmp(const char *string1, const char *string2, size_t count); int _strncmp(const char *string1, const char *string2, size_t count); #include int wcsncmp(const wchar_t *string1, const wchar_t *string2, size_t count); #include int _mbsnbcmp(const unsigned char *string1, const unsigned char *string2, size_t count); 매개.. 2018. 11. 30.
유니코드 / 멀티바이트 / T캐릭터 - 문자열 함수 유니코드 / 멀티바이트 / T캐릭터 - 문자열 함수strcpy_s / wcscpy_s / _mbscpy_s / _tcscpy_s - 문자열을 복사strncpy / wcsncpy / / _tcsncpy - 사이즈 만큼 복사strlen / wcslen / _mbslen / _tcsnlen - 문자수 반환strcat / wcscat / / _tcscat - 두 문자열 이어 붙이기strncat/wcsncat / / _tcsncat - 사이즈 만큼 이어 붙이기strcmp / wcscmp / / _tcscmp - 문자열 비교 (반환 값(-1, 0, 1))strncmp / wcsncmp / _mbsncmp / _tcsncmp - 지정크기만큼 문자열 비교stricmp / wcsicmp / / _tcsicmp - 대소문.. 2018. 11. 29.
enum의 비트연산 활용 (여러가지 조건 한번에 비교하기) 열거자라고 하는 enum의 bit 연산을 활용하면 복수의 조건을 비교선택해야 하는 상황에서 간단하게 코드를 작성할 수 있습니다. 평소에 enum을 사용한 코드들을 보면 깊이 생각지 않고 개발자가 명명한 enum의 이름대로 직관적으로 코드의 흐름만 이해하고 넘어갔기 때문에 배우지 못했던 방법이었는데 알고나니 유용한것 같습니다. enum의 용도 enum은 말그대로 나열되는 이름들에 차례대로 번호를 부여해서 논리적 관계를 기술하기 여려운 개념도 산술적으로 기술할수 있도록 해주는 유용한 기능입니다. 그래서 코드의 가독성이 높아지도록 할 수 있는데요. 예를 들어 다음과 같습니다. enum day { Mon=1, Tue, Wed, Thr, Fri, Sat, Sun }; int today = Mon; int some.. 2018. 11. 29.
[C++/MFC 핵심노트] Class (클래스) 정의,선언 - PART 1 2018-12-12 update log: 더미프로젝트 변경으로 인한 실습코드 수정 클래스는 C++을 객체 지향 언어라고 부르게하는 가장 중요한 부분이라고 합니다. 클래스는 사용자가 내부의 데이터 멤버와 함수를 정의해서 만드는 데이터 타입입니다. 그리고 이렇게 만들어진 클래스는 인스턴스를 생성해서 사용하게 된다고 합니다. 클래스의 개념만으로는 저도 뭔소린가 싶은데, 예제를 보면서 차근차근 이해해 보도록 하겠습니다. Class 정의 클래스 사용에 앞서 정의가 필요합니다. 클래스가 어떤 구조를 가지고 있으며 어떤 타입의 객체를 가지고 어떤 동작을 할 것인지 개략적인 컨셉을 설명해주는 과정입니다. 정의를 하는 방법은 "class" 라는 키워드와 함께 사용할 이름과 중괄호로 둘러싼 본문을 차례대로 써주면 됩니다... 2018. 11. 19.
CodeProject.com에서 다운받은 C++ 프로젝트 컴파일 하는 방법 인터넷에 공개된 소스코드를 받아서 컴파일하는 방법을 알아 보겠습니다. 한번만 해보면 별거아닌건데 제가 공부를 시작했던 초반에는 남들다 만들어 놓은 프로젝트인데도 컴파일을 못해서 사용을 못했던 안타까운 기억이 있습니다. 이런내용도 누군가에게 도움이 되길 바라며 기록을 남깁니다. 저는 요즘, 테이블로 작성된 웹페이지를 받아와서 HTML코드를 파싱한 후 필요한 데이터를 골라오도록 하는 프로그램을 만들려고 공부를 하고 있습니다. 이런 때, 가장 쉬운방법은 인터넷의 많은 능력자분들께서 만들어 놓은신 예제 코드를 활용하는 거죠. 어디서 어떻게 시작해야 할지 모를때, 예제 프로그램에서 내가 필요한 부분들을 하나씩 수정해 나가다 보면 원하는 결과물도 빨리 얻을 수 있고, 내가 어떤 부분을 몰랐는지도 알수있게 되죠. 또.. 2018. 11. 14.
[C++/MFC 핵심노트] C++언어의 기본구문 - 분기, 반복 C++ 언어의 기본 구문에 대해서 정리해 봅시다. 분기문 if / else 문 "if"문은가장 기본적인 분기문으로 조건에 따른 분기를 만드는 대표적인 구문입니다. "else"키워드와 함께 사용하면 다양한 분기를 만들수 있습니다. "else"는 필요에 따라서 생략 할 수도 있습니다. if (height > 180) { result = _T("tall"); } else if (height = 179) { result = _T("too close"); } else { result = _T("short"); } switch 문 "switch"문은 연산결과에 따라 서로다른 분기를 만들어 주어야 할 때 간단히 사용할 수 있는 분기문입니다. 특징은 "break"명령으로 끝어주지 않으면 그 아래 케이스가 이어서 동작합.. 2018. 11. 13.
연산자 (Operators) 정리 C++ 언어의 연산자 총괄표 입니다. (최대한 모든 연산자를 담고자 했습니다.) 연산자 표기 사용법 및 설명 범위확인 :: 여러범위에서 식별자를 구분 멤버선택 . 혹은 -> 구조체 및 클래스의 멤버를 참조 베열 첨자 [ ] arr[5] //배열 참조 함수 호출 ( ) function( ) // 함수호출 더하기 + x+y 빼기 - x-y 곱하기 * x*y 나누기 / x/y 나머지 % x% 더하기 할당 += x += 5; // x = x + 5 빼기 할당 -= x -= 5; // x = x - 5 곱하기 할당 *= x *= 5; // x = x * 5 나누기 할당 /= x /= 5; // x = x / 5 나머지 할당 %= x %= 5; // x = x % 5 증가 ++ x++; ++x; 감소 -- x--;.. 2018. 11. 12.
[C++/MFC 핵심노트] 배열과 포인터 그리고 문자열 2018-12-20 update log: 실습용 더미프로그램 수정으로 인한 실습코드 변경 2018-11-21 update log: 오류사항 수정 배열, 포인터, 문자열은 서로 개념적으로 긴밀한 관계가 있습니다. 개념과 연관성을 자연스럽게 이해하도록 하기위해 이 3가지를 하나의 주제로 묶어서 설명하려 합니다. 핵심은 포인터라고 할 수 있을 것 같습니다. 포인터란 개념은 C/C++에서 매우 중요하다고들 합니다. 그리고 언어를 공부해 본적 있는 분들은 포인터가 나오기 전까지는 별 거부감 없이 잘 따라가다가 포인터 부터는 이게 뭔소리가 했던 경험들 다들 있으실 겁니다. 저도 아직 포인터란 개념을 완벽히 이해했다고는 말하지 못하지만, 지금 다시 생각해보면 어려운 개념이라서 이해를 못한것이 아니라 책의 설명이 너무.. 2018. 11. 12.
[C++/MFC 핵심노트] 실습용 더미 프로젝트 만들기 2018-12-20 update log: 화면출력관련, 일정한 코드를 사용할 수 있도록 myprint()함수 및 edit control 사용 2018-11-21 update log: 누락사항 수정 프로그래밍을 공부하는데 가장 중요한 것은 실습입니다. 제가 소개해 드리는 MFC 기본강좌에서 실습이 필요한 코드가 있을 때 그 코드를 바로 넣어서 사용하기 위해서 MFC 기반의 더미 프로젝트를 만들어 놓고 실습에 사용하도록 하겠습니다. MFC 기반의 프로그램 만들기라는 목적 지향적 강좌이기 때문에 보통 교재에서 소개하는 콘솔 기반의 프로그램과는 다르게 윈도우 기반의 프로그램에서 출발하려 합니다. 참고해 주세요. 실습용 더미 프로젝트를 만들기 프로젝트의 시작은 언제나 비슷하기 때문에 지난 강좌의 "[C++/MFC.. 2018. 11. 6.
C++/MFC 변수 총정리 - 타입, 크기, 범위, 표현형 아래표는 윈도우 기준 32비트와 64비트에서 각 변수들의 크기와 범위를 정리한 표이다. 그리고 코딩시 가끔 사용되지만 기억하지못해서 매번 찾게되는 타입별 표현형(format)도 같이 정리했다. 32비트와 64비트 윈도우는 서로다른 데이터 모델을 사용하지만 아래 표에서 정리된 타입들은 모두 동일하며 차이는 표에 표현하지 않은 포인터에서 차이가 난다. (32비트에서는 32비트, 64비트에서는 64비트로 표현) 기본 자료형 타입별 크기와 범위 분류타입 크기[bytes] 범위표현형 / 비고 void void- - - Boolean bool 1 0 or 1 - Integer (signed) 부호있는 정수형 char / signed char1 -127 ~ 127 %c, %hhi signed short int / s.. 2018. 10. 29.