Lusain's Blog ─ Programing & Novel Review +

Sources

Posts

42 posts

Visual Studio의 유용한 단축키 이름

Visual Studio 2019를 튜닝하다가 나부터 기억에 남으라고 기록해보는 단축키 이름 목록이다.[도구 > 옵션 > 키보드]에서 해당 키워드를 입력하여 단축키를 확인 또는 변경할 수 있다. 1. 편집.일치하는다음캐럿삽입 visual studio code에서 신나게 쓰던 기능. 2019는 확인했는데 2017은 확인 안 해봄.2017에도 있던 기능이니까 되지 않을까? 기본 단축키: Alt + Shift + . 개인적으로는 Ctrl + W로 바꾸면 사용 중이다. 2. 편집.선택영역서식 visual studio 2013부터는 붙여넣을 때 자동으로 설정해둔 서식(vs 내장 서식 또는 clang-format 등)으로 자동으로 코드를 포매팅하는데 그걸 수동으로 하고 싶을 때 사용한

[Direct2D/DWrite]설치되지 않은 폰트 설치하지 않고 사용하기

AddFontMemResourceEx는 DWrite의 CreateTextFormat 등에서 적용되지 않는다. DWrite의 CreateTextFormat 함수는 두 번째 인자로 fontCollection을 받는데, 이 값이 nullptr이면 시스템 폰트에서 첫 번째 인자로 주는 fontFamilyName을 검색한다. DWrite에서 시스템 폰트 이외의 폰트를 사용하는 방법은 이 폰트 컬렉션을 만드는 방법이다. 폰트 컬렉션을 만드는 방법은 크게 두 가지로 나눌 수 있는데, 하나는 Windows 10 이상의 환경에서만 사용 가능한 방법과 그 이전의 버전에서 사용 가능한 방법이다. Windows 10 이전 버전 호환을 위한 방법 Windows 7/8.1에서 사용되는 방법은 Windows 7의 Windows

[C++] 표준 라이브러리를 사용하여 숫자 세 자리마다 쉼표 붙이기

※ 이 기능을 숫자 형식(numeric format)이라고 하겠다.  출처는 MSDN |매우 많은 목적으로, 숫자를 표기할 때 세 자리마다 쉼표를 붙인다. MSDN에서는 숫자 형식이라고 하던데, 표준 명칭인지는 모르겠다. 일단 이 문서는 해당 단어를 사용한다. 우선 숫자 형식에 대해 알아보자.한국에서는 당연하게 정수부에 1000 단위로 쉼표를 붙이고 소수점을 표시하기 위해 정수부가 끝나고 마침표를 찍는다. 하지만 독일에서는 반대다! 1000 단위로 마침표를 찍고, 소수점을 표시하기 위해 쉼표를 찍는다. 대체로 프로그래밍을 배우는 초기 단계에서 해당 기능을 구현해봤겠지만 이런 보편적인 기능은 왠지 표준에 있을 것 같다. 그런 생각을 하고 찾아보니 정말 있더라. 국가나 문화에 따라 달라지는 것이 있다.

[WIN32] 멀티바이트가 아닌 인코딩된 문자열을 콘솔에 표시할 때

최근, char*로 반환되는 문자열의 인코딩이 UTF-8인 경우를 맞딱뜨렸다. 이걸 UTF-8 인코딩 된 파일로 저장해서 읽으면 잘 읽어지는데 콘솔로 출력하니 인코딩이 깨지더라. std::ios는 imbue라는 locale 설정 함수가 있다. 이를 상속받은 std::ostream, std::cout 등도 동일한 함수가 있고 이를 사용하면 ios에 들어간 데이터를 해당 로케일로 인코딩하여 보여준다. 그런데 이게 안 되더라! char* recv_msg; // char*로 반환된 UTF-8 문자 std::cout.imbue(std::locale{ "ko_KR.UTF-8" }); // 한글 UTF-8 인코딩 std::cout << recv_msg << std::endl; 이런

[C++] 특정 멤버 함수가 있는지 판별하기(std::declval을 사용하여)

템플릿 인자에 특정 함수가 있는지 확인하고 싶을 때가 있다. 예를 들어, 입력이 들어오면 정수를 반환하는 단순한 템플릿 클래스를 구현하려고 한다. template int GetVal(Ty val) { return (int)val; } 이 때 primitive type(char, short, int, long, float, double…)이 아닐 경우에는 컴파일이 실패하지만, length() 함수가 있으면 그 값을 반환하게 하고 싶다. 예시로, std::string의 경우부터 처리해보자. 템플릿 특수화(TemplateSpecialization)을 사용하여 처리한다. template <> int GetVal(std::string val) {