Lusain's Blog ─ Programing & Novel Review +

Sources

Posts

42 posts

[C++17] filesystem

C++17에서, 경로와 디렉터리, 확장자 등에 관련된 연산을 하는 C++ 표준 라이브러리가 추가됐다. boost API에 있는 기능이었지만, 사용법은 약간 다른 것 같다(boost API를 써 본 적이 없어서 확답을 못 하겠다). namespace std::experimental::filesystem::v1 에 정의되어 있으며(#include), C++ 표준라이브러리와 같이 사용하면 굉장히 편하게 사용이 가능하다. 장점 : 파일 경로를 저장하기 위한 path 클래스를 지원한다. path 클래스의 멤버는 문자열과 경로 설정을 위한 기능을 제공한다. path 클래스를 사용하여 간단하게 확장자를 확인하고 교

Github 학생 개발자 팩을 얻어보자!

Github 학생 개발자 팩을 얻어보자!

github는 가장 유명한 무료 온라인 git 저장소 제공 사이트이다. 가입을 하기만 해도 무료 공개 레포지토리 생성이 가능하고, 매달 일정 금액을 지불하면 무제한으로 비공개 레포지토리 생성이 가능하다. 학생의 경우, 학생이라는 것만 인증하면 Github Education에서 학생용 개발자 팩이 제공된다. 이 팩은 매달 일정 금액을 내는 것과 동일하게 무제한 비공개 레포지토리 생성이 가능한 패키지이다. 기한은 2년이고, 2년 뒤에도 학생이라면 갱신이 가능하다. 긴 말 하지 않고, 과정을 전부 스크린샷으로 찍었다. 하나씩 따라가자. 1. https://education.github.com/ 에 접속하여 [Get the pack]을 누른다. 2. [Get your

[Visual Studio] 코드로 중단점을 걸어보자

디버깅을 할 때 중단점은 굉장히 중요한 요소이다. 원하는 위치에, 원하는 조건과 원하는 때(호출된 위치)에 프로그램을 중단시킬 수 있기 때문이다. Visual Studio에선, 중단점/책갈피/열린 파일 등의 정보는 .suo(solution user option) 파일에 저장이 된다. 이 파일은 협업 시 공유할 필요가 없다. 협업 중, 또는 코드만 보관하는 등 중단점을 저장할 방법이 없다면 debugapi.h 에 있는 함수를 사용하여 중단점을 걸 수 있다. WINBASEAPI VOID WINAPI DebugBreak(VOID); 라고 돼 있는 함수이고, 자세한 내용은 MSDN 참고. 끝, 인줄 알았지만 할 게 더 남았다. 이 함수를 호출하면 중단점이 트리거 되는데, 문제는 디

[C++] std::map을 사용해보자!

std::map은 키와 값이 있는 자료구조인데, 특이한 점은 키들 간 크기 비교가 가능하면(연산자 오버로딩 등의 방법으로) 어떤 구조체라도 상관이 없다는 점이다. 예를 들어 std::string이라던가, 값이 0부터 늘어나지 않거나 순서대로 증가하지 않는 enum 등등. 그리고 크기 비교가 가능하기 때문에 입력 시 자동적으로 정렬이 된다. 이 자료구조는 굉장히 쓰기 쉽게 [] 연산자를 지원하는데, [] 안에키를 입력하면 값에 접근할 수 있다. 심지어, 해당 키에 대한 값이 초기화되어 있지 않아도 접근이 가능하다. 말이 살짝 어려울 수 있으니 예제를 보자. #include … class T { }; std::map m;m[10] = new T{};

[C++11] 표준 라이브러리만을 이용한 std::string 과 std::wstring 간의 변환방법

가끔 유니코드 문자열을 인자로 받는 함수에 멀티바이트로 저장한 문자열을 넘겨줘야 할 때, 또는 그 반대의 경우에 유용한 함수이다. Locale은 원하는 국가코드를 집어넣으면 된다. #include #include #include inline std::wstring s_to_ws(const std::string& str, std::locale Loc = std::locale("ko")){using conv_Ty = std::codecvt_utf8_utf16;return std::wstring_convert { &std::use_facet