프로그래밍/C++ 썸네일형 리스트형 [C++17] filesystem C++17에서, 경로와 디렉터리, 확장자 등에 관련된 연산을 하는 C++ 표준 라이브러리가 추가됐다. boost API에 있는 기능이었지만, 사용법은 약간 다른 것 같다(boost API를 써 본 적이 없어서 확답을 못 하겠다). namespace std::experimental::filesystem::v1 에 정의되어 있으며(#include ), C++ 표준 라이브러리와 같이 사용하면 굉장히 편하게 사용이 가능하다. 장점 : 파일 경로를 저장하기 위한 path 클래스를 지원한다. path 클래스의 멤버는 문자열과 경로 설정을 위한 기능을 제공한다. path 클래스를 사용하여 간단하게 확장자를 확인하고 교체할 수 있다. path 클래스에서 UNICODE와 MULTIBYTE 모두 지원한다. 이것은 std:.. 더보기 [C++] invoke 함수의 동작원리를 통해 설명하는 템플릿 부분 특수화와 SFINAE 템플릿 부분 특수화 기법(partial template specialization)은 템플릿을 이용한 구조체나 클래스, 함수 등에서 일부 템플릿을 특정하여 오버로드 하는 기법을 말한다. 자세한 것은 MSDN을 참고 | https://msdn.microsoft.com/ko-kr/library/3967w96f.aspx SFINAE(Substitution Failure Is Not An Error)은 템플릿의 치환이 틀리더라도, 다른 템플릿에서 알맞은 치환이 있을 수 있기 때문에 Substitution Failure (치환 실패 : 형식을 올바로 추론할 수 없을 경우) Is Not An Error(에러가 아니다) 라고 부른다. 자세한 것은 SFINAE를 검색해도 좋고, 개인적으로 해당 블로그를 참고했다. SF.. 더보기 [C++11] 균일 초기화(중괄호 초기화) 중괄호 초기화 Visual Studio 2010, 또는 그 이하의 버전에서 구조체를 초기화하려면 별도의 초기화 함수를 두거나, 클래스처럼 초기화를 만들어야 했다. 예를 들어, Windows API 에서 자주 쓰이는 구조체 RECT를 보자. VS 2010 까지는 RECT의 초기화를 이렇게 해줘야 했다. RECT rc;rc.left = 0; rc.top = 0, rc.right = 100; rc.bottom = 100; 조금 더 귀찮아지면 이렇게 만들어 줄 수 있다.RECT MakeRect(LONG left, LONG top, LONG right, LONG bottom){RECT rc;rc.left = left; rc.top = top, rc.right = right; rc.bottom = bottom;re.. 더보기 [C++11] 가변인자 탬플릿(Variadic Template) C에서는 va_list를 사용하여 가변인자를 처리해야 했다. va_start로 시작해서 va_end로 끝내야 했으며, 어떤 타입인지 미리 알려주어야 하거나 모든 같은 형으로 가변인자를 사용해야 했다. 불편했고, C 마지막에 printf와 scanf의 동작원리로 배운 뒤로는 써 본 적이 없던 개념이다. C++로 와서 template 이라는 개념이 생겼다. 어떤 형태라도 template으로 뭉뚱그려 인자로 받을 수 있게 된 것이다. 그리고 가변인자 역시 template, 탬플릿으로 받을 수 있다. 가변인자 탬플릿은 다음과 같이 선언한다. template반환형 함수명(첫번째_가변인자_인수... 가변인자_변수); 타입이름 앞에 ... 을 붙여 가변인자 탬플릿이라고 알려준다.한글로 쓴 이름은 원하는 타입을 적으면.. 더보기 [C++11] enum class C++03 까지 열거형은 범위가 제한되어 있지 않았다. 사실 이름이 있는 int 형이라는 인식으로 사용했었다. C++11에서는 열거형이 강화됐다. 열거형은 namespace 같이 범위를 제한하게 되었고, 열거자는 열거형을 통해서만 접근할 수 있게 바뀌었다. 이전까지는 enum Dir { Left, Right }; 로 쓰더라도 int myDir = Left; 같이 int 형으로 대입이 가능하다. 심지어 열거자와 같은 이름의 객체는 생성할 수도 없다. int Left = 10; // error! 결국, C++03까지의 열거자는 const int 와 별다른 차이가 없었다. C++11 에서는 enum class 를 통해서 기능을 강화했다. 열거형의 이름 ↓ enum class Dir : int { Left, R.. 더보기 이전 1 다음