C++/Boost 5

[Boost] 문자열 다루기

boost 에서 문자열을 다루는 방법을 알아본다. boost::lexical_cast 정수형 실수형 값을 문자열로 바꾸거나 반대로 문자열을 정수형, 실수형 값으로 변환할 때 사용한다. 기본 사용 문자열에서 값으로 변환하기, 타입으로 넘겨준다. auto i = boost::lexical_cast("100"); char chars[] = { 'x', '1', '0', '0', 'y' }; auto i2 = boost::lexical_cast(chars + 1, 3); 해당 변수에 담을 수 없는 값으로 변환하거나 변환이 불가능하다면 boost::bad_lexical_cast를 던진다. try { auto sh = boost::lexical_cast("100000"); } catch (const boost::b..

C++/Boost 2022.08.21

[Boost] thread

boost thread 사용법을 알아본다. 대부분의 기능은 C++11에 표준화되어 헤더에 포함되어 있다. 필요 헤더 #include thread 사용하기 static bool is_first_run() { return true; } static void fill_file(char fill_char, std::size_t size, const char* filename); static void p_example() { if (is_first_run()) { boost::thread(boost::bind(&fill_file, 0, 8 * 1024 * 1024, "save_file.txt")).detach(); } } 실행하고자 하는 함수를 전달하여 스레드를 만들어 실행하도록 한다. detach()는 프로그램..

C++/Boost 2022.08.21

[Boost] any / variant / optional

boost::any C#, JAVA와 같이 모든 타입을 지칭할 수있는 타입을 제공한다. 필요 헤더 #include 모든 타입을 담을 수 있는 클래스 void example2() { boost::any variable(std::string("Hello World!")); // if casting failed, may throw boost::bad_any_cast string s1 = boost::any_cast(variable); // if casting failed, s2 is null string* s2 = boost::any_cast(&variable); } 값에 대한 any_cast는 타입이 맞지 않을 시 boost::bad_any_cast를 던진다. 포인터에 대한 any_cast는 null로 대체..

C++/Boost 2022.08.20

[Boost] program_options

boost의 program_options을 사용해본다. 프로그램 시작 인수를 ./program.exe --option=value 과 같이 실행하고 필요 정보를 출력할 수 있게 해준다. 필요 헤더 #include 사용 방법 1. options_description 개체를 정의를 해준다. 2. 프로그램 인수를 파싱한다. 3. 프로그램 인수를 적용한다. 특징 options_description의 add_option()을 할 때 인수를 필수로 지정하거나 기본값을 지정하는 등을 할 수 있다. ./program.exe --help를 통해 옵션 정보를 출력할 수 있다. .cfg 파일을 통해 인수를 설정할 수 있다. #include "global.h" #ifdef _DEBUG #pragma comment(lib, "l..

C++/Boost 2022.08.20

[Boost] 라이브러리 설치

C++ 고급 기능을 사용할 수 있는 boost 라이브러리를 설치해본다. https://www.boost.org/ Boost C++ Libraries Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications www.boost.org 공식 사이트 기준 boost 1.80.0 버전을 사용할 수 있다. 라이브러리 소..

C++/Boost 2022.08.20