CString => string // 방법 1 CString cstr = _T("안녕"); CT2A convertedString(cstr); string str = string(convertedString); //방법 2 CString cstr = _T("안녕"); string str = string(CT2CA(cstr)); cout CString string str="안녕"; CString cstr=str.c_str(); //or string str("안녕"); CString cstr(str.c_str()); CString => int CString cstr = _T("123456789"); // 유니코드 문자열 처리 방식 int i = _ttoi(cstr); // 멀티바이트 문자열 처리 방식 int ..
함수 설명 stoi string -> int stol string -> long stoll string -> long long atoi byte string(= const char*) -> int atol byte string(= const char*) -> long atoll byte string(= const char*) -> long stod byte string(= const char*) -> double stof byte string(= const char*) -> float stold byte string(= const char*) -> long double stoul string -> unsigned long stoull string -> uinsigned long long stoi 예시 #..

콤보박스 리스트에 아이템 추가하기 1. 콤보박스 생성 후 control 변수 생성 2. 'OnInitDialog()' 함수에 아래와 같은 코드를 작성 // OnInitDialog 함수 내부 // 리스트의 아이템을 추가 m_testList_combo.AddString(_T("메뉴 1")); m_testList_combo.AddString(_T("메뉴 2")); m_testList_combo.AddString(_T("메뉴 3")); // 현재 리스트 아이템 위치를 설정 m_testList_combo.SetCurSel(0); 콤보박스 리스트의 아이템이 바뀌면 자동으로 값이 변경되도록 구현 1. 콤보박스를 선택한 상태에서 '이벤트 처리기' 메뉴를 선택 2. 클래스 목록을 프로젝트Dlg 로 설정하고 메시지 유형은..

다이얼로그 적용법 1. 도구 상자에서 'Edit Control' 를 클릭하고 중앙의 다이얼로그에 드래그 앤 드롭 한다. 2. 생성된 'Edit Control' 를 클릭하고 속성 탭의 ID를 변경 (구분되도록 이름 짓자) 필수적으로 ID를 바꿔야 하는 것은 아니다. 다만 규모가 큰 프로그램을 만들 때 혼동될 수 있으니 습관적으로 이름을 바꾸어 주도록 하자. Edit Control를 생성하고 'resource.h' 파일을 확인하면 아래 네모처럼 새로운 변수가 추가된 것을 볼 수 있다. 3. 'Edit Control' 를 선택하고 마우스 우측 클릭하여 '변수 추가' 메뉴 클릭 4. [범주: 컨트롤, 이름: 마음대로 ] 를 설정하고 '마침' 클릭 5. [범주: 값, 이름: 마음대로 ] 를 설정하고 '마침' 클릭..
보호되어 있는 글입니다.

기존 통신 시스템, 서킷 스위칭 시스템 (Circuit switching system) 정의 정보를 송수신하는 과정에서 송수신 단말 사이에 회로(circuit) 연결을 해두고 정보 전달을 수행하는데 이때, 이 회로는 보다 작은 단위의 회선(line)을 길게 맞추어 연결한 것으로 송수신이 일어나는 동안 유지되는 방식이다. 특징 전체 경로에 걸쳐 전용 회선을 할당하므로 정보 전달은 매우 높은 품질로 할 수 있다. 한 번에 하나의 통신 전용으로만 회선을 사용해야 하므로 가용성 면에서 제한적이다. 위의 이미지를 보면 사당역의 한 역무원이 안양의 역무원에게 메시지를 보냈다고 생각해 보자. 메시지는 신도림역과 가산디지털역을 거쳐 안양에 도달하게 된다. 이때 광명역의 역무원은 신도림역에 메시지를 보내고 싶어도 사당역..
std::unique_ptr 특징 리소스를 독점 복제 불가 메서드 이름 설명 get 리소스에 대한 포인터를 리턴 get_deleter delete 함수를 리턴 release 리소스에 대한 포인터를 리턴하고 그 리소스를 해제 reset 리소스를 리셋 swap 리소스를 맞바꿈 코드 예제 // 이것은 unique_ptr 예제 #include #include using namespace std; struct MyInt { MyInt(int i) :i_(i) {} ~MyInt() { cout
유틸리티 (Utility) 유틸리티 라이브러리는 여러 문맥에 두루 활용할 수 있는 범용 기능을 모아둔 라이브러리이다. 종류 함수 설명 std:: function bind 로 만든 함수를 나중에 호출하기 위해 변수에 바인딩하기 위해 사용된다. std:: bind 기존 함수를 토대로 새로운 함수를 쉽게 만들 수 있다. std:pair 임의의 길이로 된 이형(heterogeneous) std::tuple 페어를 일반화 std:ref 변수에 대한 레퍼런스 래퍼 오브젝트 std:cref const 레퍼런스 std::unique_ptr 스마트 포인터, 단독 소유권 std::shared_ptr 스마트 포인터, 공유 소유권 STL 구성요소 컨테이너(Container) 알고리즘(Algorithm) (약 100가지의 알고..

출처 : http://gameprogrammingpatterns.com/game-loop.html 게임 루프의 핵심 요소 우리가 게임을 어떻게 하는지 곰곰히 생각해보면, 키보드와 마우스를 이용해서 입력을 받아오고, 그와 동시에 컴퓨터 모니터에 캐릭터가 움직인다. 게임 장르에 따라 총을 쏠 수도, 마법을 부리거나 칼을 휘두를 수도 있다. 그럼 이 개념들을 이용해서 비스무리한 코드를 작성한다면 아래와 같이 나올 것이다. while (true) { processInput(); update(); render(); } 별거 없다. 그냥 무한루프에 입력, 갱신, 렌더링 이것들이 전부이다. 루프는 얼마나 빠르게 돌아갈까? 실제 게임을 하면서 우리는 캐릭터가 움직이는 것을 본다. 엄청 부드럽게 움직이지 않는가? 이러한..