CPP

포스트: 32|조회수: 0|ORGANIZATION
Items

Posts

32 posts

[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

[C++] 캐스팅 연산자: static_cast / dynamic_cast

C 에서, int를float로 바꾸고 싶은 경우가 종종 있다. 예를 들어 정수 두 개를 나누어 소수점을 얻고 싶을 때. int a = 1;int b = 2; a / b = 0.5 라는 값을 얻고 싶다면 어떻게 해야 할까? 일단 말 그대로 a / b를 하면 값이 0이 나오게 된다. 정수 형식 간의 나누기 연산은 몫(/)과 나머지(%)로 나뉘기 때문이다. 이 경우에는 몫은 0, 나머지 1 이 되기 때문에 원하는 값을 얻지 못한다. 문제를 해결하기 위한 가장 간단한 방법은, (float)a / (float)b 같이 값 앞에 괄호로 감싼 변환 형을 적는 것으로 형 변환을 하는 것이다. 이 때, 변환 형은 표준 변환에 따라 변환 가능한 형식이어야 한다. 표준 변환 |이런 변환은 C 스타일의 명시적 형 변환이라고 하

[Visual Studio] 참조 프로젝트를 만들어보자

[Visual Studio] 참조 프로젝트를 만들어보자

Visual Studio 2015로 넘어오면서, [솔루션 탐색기]의 프로젝트 아래에 [참조]라는 항목이 생겼다. 이게 무엇인가? 참조 추가라고 하면 프로젝트를 선택하라고 한다. 여전히 사용법은 모른다. 이제부터 알아보자. 목적 : 프로젝트 독립적인 라이브러리들을 사용하고 싶을 때 a. 의 경우에서, 라이브러리 소스파일에 접근하고, 수정할 필요가 있을 때 방법 : 정적 라이브러리로 구현 솔루션에 새 프로젝트 추가(기존 프로젝트가 있을 경우 생략) [Win32 프로젝트] > [정적 라이브러리] 로 프로젝트 생성 메인 프로젝트의 참조 아이콘에서 [참조 추가 (R)...] > 참조 프로젝트 선택 메인 프로젝트의 속성에서 [추가 포함