Lusain's Blog ─ Programing & Novel Review +
Posts
42 posts![[C++] Data Save (2)](https://img.zoomtrend.com/2018/05/21/f0084961_5b02c17d268ab.png)
[C++] Data Save (2)
이전 글과 이어지는 내용이다. 데이터를 저장하기 위해서는 정적 데이터 구조로 저장할 필요가 반드시 존재한다. 동적으로 매우 많은 데이터를 저장하기 위해서는 이 데이터가 얼마나 많은 지 설명할 수 있는 정적 데이터가 선행되어야 한다. 이 정적 데이터는 단순히 4 byte 정수형 값 하나라도 상관 없다. 예를 들어, 개행 문자가 포함되는 로그 파일을 저장할 때는 문자열을 어디까지 저장하고 읽을지 알기 어렵다. 이 때 이런 약속을 하는 것이다: 맨 처음 4byte는 무조건 로그의 사이즈이고, 그 사이즈만큼만 로그 데이터라고 한 뒤에 그 다음 4 byte는 다시 로그의 사이즈를 저장하는 식으로 데이터를 저장하자고. 물론, 쓰이지 않는 특정 문자로 구분자(separator)를 사용해서 구분자가 나올 때까지
[C++] Data Save
C/C++을 배우면 후반부에 파일 입출력에 대해 배우게 된다. 간단한 입출력 실습도 하는데 그런다고 문자열 데이터 말고는 데이터를 넣어본 적이 거의 없을 것이다. 구분자는 거의 다 줄바꿈이고. 이번 글에서 다룰 파일 입출력 방식은 C++11의 std::fstream을 사용하지만 개념 자체는 어떤 방식이든 무관하게 사용이 가능하다. 우선 예전 기억을 돌이켜보자. 우리는 어떻게 파일 입출력을 하였는가? bool Save() { int save_int = 5; float save_float = 3.123f; std::string save_string = "hello, world!"s; std::fstream fs; fs.
[C] do { } while ( false, false );
얼마 전에 트위터에 적었던 do { } while ( false, false ); 문에 대한 이야기를 여기에 다시 정리한다. 원본 | https://twitter.com/Lusain_Kim/status/973551377774395393 ------------------------------------------------------- 코딩을 하다 보면, 로직 중간에 탈출할 필요가 생긴다. 가장 좋은 방법은 함수를 만들어 로직을 분리하는 방법이지만, 로직에서 변경하는 변수가 한두개가 아니다보면 골치가 아파온다. 이 때 사용하는 기법은 C에서 몇 가지가 있다. goto 이 얼마나 깔끔하고 완벽한 방법인가! 중간에 어디로 가야한다? 그러면 goto지! ...하지만 아직도 goto를
[Direct2D] GDI 객체(HICON, HBITMAP)를 Direct2D Bitmap(ID2D1Bitmap)으로 변환하는 방법
WIC(Windows Imaging Component)을 통해 GDI 객체(HICON, HBITMAP)를 WICBitmap 객체로 받아올 수 있다. 우선 HICON에 대해서 다뤄보자. HICON 객체를 들고있는 경우는 거의 없을테니 리소스에서 불러오고 해제까지 하는 예제다. 필요한 건 두 가지, ID2D1RenderTarget과 IWICImagingFactory. 이는 Direct2D 초기화 시점에서 만들어둔 객체를 사용하면 된다. // 미리 만들어진 IWICImagingFactory 객체ComPtr wicFactory;// 미리 만들어진 render target 또는 device contextComPtr pd2dRe
![[C++11] std::tuple의 std::get 함수에 대해 알아보자. (특히 std::get<Type>()에 대해)](https://img.zoomtrend.com/2018/02/21/f0084961_5a8da74f02740.png)
[C++11] std::tuple의 std::get 함수에 대해 알아보자. (특히 std::get<Type>()에 대해)
std::tuple은 여러 개의 값을 묶는 고정 크기 C++ 표준 컬렉션이다. std::pair는 2개의 값만 묶는데, 이보다 일반화된 컬렉션이 std::tuple이다. std::tuple은 처음 보면 쓰기 꽤 난감하다. 일단 멤버에 접근하는 멤버 함수가 없다. std::tuple에 접근하는 방법은 std::get을 사용하는 것이다. std::get은 템플릿 함수이다. 거의 같은 내용으로 cv-idntifier 등의 차이 때문에 8개의 오버로딩이 있지만, 큰 차이가 없다. 그 중 간단한 쪽 두 개를 들고왔다. // FUNCTION TEMPLATE get (by index) template



