C++13 [C/C++] C++ JSON parser example, C언어 JSON 파서 예제, rapidjson C++ JSON parser example 본 json_parser 라이브러리는 rapidjson을 활용한 wrapper이다. 이미 그 자체로 훌륭한 JSON parser 인 rapidjson은 소스코드가 아닌 헤더로만 구성되어있고 사용자의 역량에 따라 코드 표현이 천차만별이라 같은 선언, 같은 메서드, 같은 출력을 보장하기 위해(공용화) wrapper class를 만들게 되었다. * rapidjson 홈페이지, tutorial이 무척 잘되어있다. https://rapidjson.org/ RapidJSON: Main Page A fast JSON parser/generator for C++ with both SAX/DOM style API Tencent is pleased to support the op.. 2022. 1. 17. [C/C++] C언어 MAC 주소 읽기 구현, get mac address C언어 MAC 주소 읽기 구현 MAC 주소를 얻는 소스 코드를 구현한다. 네트워크 관련 처리를 하다보면 MAC 주소가 필요한 경우가 자주 발생한다. 이 역시 shell 명령을 통해 MAC 주소를 얻는거보다 소스코드로 구현하는게 깔끔하고 빠르다. 소스코드 이 역시 C언어로 변경하여 사용할 수 있다. 단지 return type을 string으로 받고 싶어 cpp로 했을 뿐. C언어 타입으로 변경하려면 cpp 요소만 제거하여 사용하자. * 이더넷 인터페이스가 많은 경우 count_if 항목에서 req->ifr_name 의 인터페이스명을 보고 판단하여 mac 주소를 획득하면 된다. 물론 한번에 다 얻을 수 도 있으니 활용하자. #include #include #include #include #include #i.. 2022. 1. 16. [C/C++] 전역 네임스페이스, 시스템 함수와 동일한 클래스 메서드 이름 사용 방법 전역 네임스페이스, 시스템함수와 동일한 클래스 메서드 이름 사용 방법 C++ class method명이 시스템 함수와 같은 경우에는 사용할 시스템 함수명 앞에 :: 을 붙여주자. 이는 전역 네임스페이스 란 의미인데, 식별자가 명시적 네임스페이스에서 선언되지 않은 경우 암시적 전역 네임스페이스에 포함되기 때문이다. 이렇게해서 되면 동일한 이름과 해당 식별자(동일한 method명과 시스템 함수)가 구분을 할 수 있다. 예제 void Handler::write(string _data) {// method - write() ::write(this->dev_fd, _cmd_id.c_str(), _data.length());// system function - write() return ; } void Handle.. 2022. 1. 14. [C/C++] C++ curl handler class 예제, C언어 curl 구현 C++ curl handler class 예제 C언어 curl, C++ curl, libcurl, linux curl C++ 클래스로 curl 을 쉽게 사용하게끔 구현하여 공유한다. 혹시 C에서 사용하고 싶다면 해당 소스코드의 클래스 내에 libcurl 함수를 제어하는 부분만 뽑아서 사용하길 바란다. https://github.com/muabow/home/tree/main/library/cpp/api_curl GitHub - muabow/home: C/C++, PHP, GO source/library C/C++, PHP, GO source/library. Contribute to muabow/home development by creating an account on GitHub. github.com 목.. 2022. 1. 13. [C/C++] C언어 Big-endian <-> Little-endian 상호 변환 C언어 빅엔디안 리틀엔디안 상호 변환 C언어로 작성된 엔디안 체크 방법과 빅엔디안과 리틀엔디안 간 상호 교환하는 방법이다. 소스코드 1. 엔디안 체크 방법 int value = 1; if( *(char *)&value == 0 ) { printf("Big-endian\n"); } else { printf("Little-endian\n"); } 2. 전체 코드 #include // function : change to little-endian int to_le(int _target) { unsigned char bytes[4]; int ret; bytes[0] = (unsigned char)((_target >> 24) & 0xff); bytes[1] = (unsigned char)((_target >> .. 2022. 1. 13. [C/C++] sprintf indicator 및 format 관련 sprintf indicator 및 format 관련 영어 원문을 포맷만 정리했다. 크게 어려운 내용은 없고 예제의 포맷과 결과만 봐도 도움이 될 것으로 보인다. The sprintf format of Ruby is basically the same as that in C. However, there are some differences, such as no short or long modifier as in C, there is a 2-bit variable indicator (%b), and not all of the dialects of sprintf (': 3-digit separators) are supported. A complete explanation of Ruby's sprintf for.. 2022. 1. 13. [C/C++] 리눅스 C언어 소켓 통신 서버, C++ socket server example 리눅스 C언어 소켓 서버 socket server example 소스코드를 공유한다. 리눅스 C++ 로 작성되었고 이전에 포스팅했던 signal handler library 를 활용하였다. https://muabow.tistory.com/200 [C/C++] signal handler library 활용과 소스코드 공유 signal handler library C/C++ 에는 signal.h 를 사용한 signal 함수가 존재한다. 시스템 인터럽트 외 여러 상황에 사용할 수 있기 때문에 필수로 시그널 처리를 하게 된다. 가장 쉬운 예를 들면 ctrl + c를 통해 muabow.tistory.com 자세한 개발환경, 디렉토리 구성, 빌드 방법 등은 github의 README.md 참고하자. https://.. 2022. 1. 11. [C/C++] 오름차순 정렬, 내림차순 정렬 C언어, qsort 활용 [C/C++] 오름차순 정렬, 내림차순 정렬 C언어, qsort 활용 qsort 함수를 이용한 오름차순/내림차순 정렬 함수 구현을 해보자. qsort는 quick sort의 약자로 배열을 정렬하는 함수이다. quick sort에 대해 간단히 설명하면 원소와 다른 원소의 비교로 정렬하는 비교 정렬이다. 알고리즘적인 내용을 터치할 건 아니니 바로 함수 원형과 사용법을 알아보자. qsort 헤더 및 원형 #include void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); qsort 함수의 인자를 쉽게 풀이해보면 다음처럼 이해하면 쉬울 것이다. qsort(, , , ) 꼭 정수 배열일 필요는 없다.. 2022. 1. 10. 이전 1 2 다음