본문 바로가기

Programming/C&CPP

C++ 홀수/짝수(홀짝) 구분 방법 프로그래밍 언어에서 정수의 홀수/짝수 구분은 비교적 간단한 주제 중 하나입니다.간단한 주제이면서도 상당히 활용도가 높습니다.C++에서 간단하게 정수의 홀짝을 구분하는 방법은 다음과 같습니다. 1. % 연산자(Modulus operator) 먼저 % 연산자로 사칙연산 급으로 취급되는 가장 기본적인 연산자입니다.Modulus operator로 불리며 정수 나눗셈의 몫이 아닌 나머지 값을 리턴합니다.정수를 2로 나눴을 때 나머지가 0이기 때문에 이것을 기준으로 홀수/짝수 구분이 가능합니다. 2. & 연산자(Bitwise AND operator)비트 연산자 중 하나인 & 연산자를 사용하는 방법 역시 가능합니다.짝수 정수의 가장 우측에 있는 비트가 0인 점을 이용하는 방법입니다.정수와 1을 & 연산자로 연산하면 .. 더보기
C++ volatile 키워드 사용 C++ volatile 키워드는 다른 키워드에 비해서 잘 사용되지 않는 편입니다. 일반적으로 volatile 키워드는 해당 변수의 컴파일러 최적화를 제한하는 용도로 사용합니다. 컴파일러는 훌륭하게 최적화를 실행하지만 volatile을 사용해서 최적화를 제한해야 하는 상황이 있습니다. 1. 첫 번째 예제 먼저 다음과 같이 멀티스레드 환경의 경우입니다. #include #include #include int i; void Func1() { extern int i; int count = 0; i = 0; while (true) { if (1 == i) std::cout 더보기
Visual C++ 확장 문법 property C#에는 property라는 개념이 존재합니다. 일반적으로 클래스에 변수가 추가될 때 protected나 private로 숨깁니다. 그리고 getter, setter를 통해서 값을 변경하고 가져오는 방법을 사용합니다. C#에서는 간편하게 자동 구현 프로퍼티를 통해서 변수 자체에서 get, set 기능을 추가할 수 있습니다. Visual Studio의 C++은 확장을 통해서 property 기능을 제공합니다. 표준 C++ 구현이 아니기 때문에 다른 컴파일러에서는 컴파일되지 않습니다. 사용 방법은 다음과 같습니다. #include class Percentage { public: void putPercent(int nVal) { nValue = nVal; } int getPercent() { return nV.. 더보기
shared_ptr에서 배열(array) delete[]로 해제하는 방법 shared_ptr은 C++에서 제공하는 스마트 포인터입니다.메모리의 관리가 까다로운 C++에서 유용하게 사용이 가능합니다.shared_ptr은 참조 카운트(Reference Count)를 통해서 메모리 해제 시점을 결정합니다.shared_ptr은 기본적으로 사용된 메모리를 delete로 해제하게 됩니다.배열(new [])이 저장되어 있을 경우에 배열의 해제를 할 수 있는 방법은 다음과 같습니다.1. delete[]를 호출하는 함수 객체를 생성초기화를 할 때 포인터와 함께 메모리를 해제할 때 사용할 함수를 전달하는 방법입니다.shared_ptr은 생성자에 메모리 해제를 위한 deleter를 전달할 수 있습니다.메모리 할당을 위한 함수를 전달하는 것도 가능합니다.함수 객체 혹은 함수를 전달해서 shared.. 더보기
C++ REST SDK(카사블랑카) wstring으로 받는 법 C++ REST SDK를 통해서 파일로 받는 방법은 아래 링크를 참조하시면 됩니다.2015/06/25 - [Programming/C&C++] - C++ REST SDK(카사블랑카)로 웹페이지 가져오기일반적으로 HTTP클라이언트는 파일을 생성하지 않습니다.받은 결과를 직접 파싱해서 사용하는 것이 일반적인 방식입니다.std::wstring으로 결과를 전달받는 전체 코드는 다음과 같습니다.wstring으로 전달 받은 이후에 XML 파서(Parser) 등으로 원하는 값을 출력하면 됩니다. #include // std::wstring #include // std::vector #include // std::pair #include int main() { // return wstring value std::wstr.. 더보기
C++ REST SDK(카사블랑카)로 웹페이지 가져오기 먼저 카사블랑카(Casablanca)를 설치하는 방법은 아래 링크에서 확인 가능합니다.2015/06/12 - [Programming/C&C++] - C++ REST SDK(Casablanca) 설치 방법C++ REST SDK를 통해서 간단하게 웹페이지를 가져오는 방법입니다.먼저 웹페이지를 가져오고 가져온 내용을 html 파일로 기록하기 위해서 다음 헤더를 추가합니다. #include #include 그리고 using 구문을 추가합니다.반복적인 코딩을 제거하기 위함입니다. using namespace utility; using namespace web; using namespace web::http; using namespace web::http::client; using namespace concurre.. 더보기
C++ REST SDK(Casablanca) 설치 방법 MS에서 제공하는 프로젝트의 하나인 REST SDK의 설치 방법입니다.Casablanca라는 코드명을 가진 프로젝트입니다.modern asynchronous C++ API 디자인을 사용하는 cloud-based client-server communication입니다.프로젝트에 대한 정보는 아래의 링크에서 확인이 가능합니다.https://casablanca.codeplex.com/이전 버전의 경우는 다운로드를 제공했지만 현재는 Nuget Package를 통해서 적용이 가능합니다.C++ REST SDK를 적용하는 방법입니다.먼저 Visual Studio 2013을 실행합니다.간단한 콘솔 프로젝트를 생성합니다.설정을 바꾸지 않고 프로젝트를 생성합니다.C++ REST SDK를 받기 위해서 임시로 생성하는 프로젝.. 더보기
wcout, wprintf 등에서 한글 출력 안될 때 해결법 유니코드 프로젝트에서 wcout이나 wprintf를 사용했을 때 한글이 출력이 안되는 문제가 생길 때가 있습니다.이럴 때 문제를 해결하기 위해서 setlocale() 함수를 사용하면 됩니다.main 함수 등에서 다음과 같이 호출하면 됩니다. setlocale(LC_ALL, ""); 이렇게 하면 시스템의 로케일을 따라가기 때문에 한글 윈도우에서 정상적으로 한글이 출력됩니다.""를 "korean"으로 변경하면 한글로 특정해서 호출할 수도 있습니다.wcout에서 한글이 정상적으로 출력되지 않을 때 다음과 같은 방법으로 처리할 수도 있습니다. std::wcout.imbue(std::locale("")); 이후에 wcout을 호출하게 되면 정상적으로 한글이 출력되는 것을 알 수 있습니다. 더보기