본문 바로가기

VisualStudio.C++.C#/코딩팁,함수활용,단편   ( 156 )


std::time_t tm gmtime localtime mktime asctime 헤더파일 #include std::time_t epoch (1970년 1월 1일 0시0분0초)이후 현재까지의 초단위 경과시간. std::tm 구조체 . 년,월,일,시,분,초 분리 처리시 용이. //UTC(=GMT) std::tm* gmtime( const std::time_t* time ); //로컬시 std::tm* localtime( const std::time_t *time ); 코드예-1. 현재시간 받고 년월일시분초 분리. std::time_t 로 epoch 이후의 초단위 시간을 tNow 로 받고, tNow로부터 현재의 년,월,일,시,분,초를 각각 구하기 위하여 std::localtime(&tNow) 함수이용하여 std::tm 구조체 형식으로 변경하여 각각의 멤버변수 tm_hour, tm_min,.. 2020. 3. 29.
Json 문자열에서 키의 값 추출 개요. - Json 형식의 문자열에서 특정 키의 값을 추출하는 기능. - 이런 간단한 기능은 Json 전용 라이브러리 이용할것도 없이 직접 구현해서 활용해도 됨. - 아래 코드는 Json 문자열 내에 1개의 리스트만 있는 경우에 적용가능하다. 여러 개의 리스트 있는 경우 추출코드. "result" : { }, 처럼 {} 이 1개. 한편, 일반적으로는 "result" : [{...},{...},...,{...}] 처럼 [] 내부에 임의의 수량만큼 {} 들이 있다. 상기 코드의 아래 부분에 있는 2개의 함수이용하여 { ... } 수량 구하고 , 각각의 { ... } 만 추출하고 함수 extract_cst_from_jsonstr 호출하여 필요한 키 값을 추출하면된다. 리스트 키에 요소가 0개인 경우와 1개 이.. 2020. 3. 22.
MFC C++. std::string ,std::wstring, CString , CT2CA, CA2CT, 코드 작업시 문자열 다루는 것 참... 지저분함의 극치다. - 본인 코드 작업에서는 문자열 정의 자료형 인코딩 체계 일관성을 유지 할 수 있지만, 다른 사람이 만든 라이브러리, 프로그램과 통신하면서 인자로 문자열이 있는 경우 항상 문자열 변환부분 작업해줘야 하는 경우 많고 오작동 하는 대표적인 지점. 똥은 피해 갸야지 뭐.. 이미 싸질러 놓은 거 다시 집어넣을 수도 없고... 사족 : 문자열 표현 체계 , 언어 , 파일 저장 규격 , 단위 ... 이런 류는 절대 단일화 일치 절대 불가능 하다. 국제 표준 같은 것도 무의미 하고 본인 관습은 절대 못버리는 호모 사피엔스 종족 특성 인가봄. std::string my_str; std::wstring my_wstr; CString my_cst; wchar_t .. 2020. 3. 22.
gettimeofday. timeval . 윈도우 에서 구현하기 리눅스 의 sys/time.h 에서 제공되는 gettimeofday 함수 - 아래 코드예처럼 사용된다. #include // 리눅스에서만 있고, 윈도우 환경에는 없음. int64_t getCurrentTime() { struct timeval tv; gettimeofday(&tv, NULL); // 구조체 tv의 멤버 tv_sec 에 초단위 , tv_usec 에 마이크로초 단위 기록됨. return tv.tv_sec * 1000; // 이 코드의 예에서는 초단위의 시간정보만 이용하고 있음. } /////////////// // 위코드에서 구조체 timeval 형식. struct timeval { long tv_sec; /* seconds */ long tv_usec; /* and microseconds .. 2020. 3. 20.
C 에서 파이썬 사용하기 http://blog.tcltk.co.kr/?p=2851 C에서 Python 호출하기 – dogfoot note 이번거는 C에서 Python 호출하는 방법임. 파이썬은 상당히 빠른 스크립트 언어이고.. 존재하는 모듈도 상상하다.. 이런거는 C로 구현하기 보다는.. 파이썬의 모듈을 끌어다 쓰는것도 한가지 방법. 아래의 문서는.. 어느분이 블로그에 적어놓은 글을 pdf로 변환한건데.. 이 문서에는 시작 포인트만 기술이 되어 있는데.. 좀더 심도있게 들어가게 되면.. 메뉴얼을 찾아보던지 해야할것임. C에서 Python사용하기(1) – 함수 호출.pdf C에서 Python blog.tcltk.co.kr https://kukuta.tistory.com/69 Python embedding 1 - Overview /.. 2020. 3. 20.
C++ REST SDK (코드명 Casablanca) 개요. C++ REST SDK REST 서비스와 상호 작용하기 위한 최신 플랫폼 간 비동기 API를 제공. - 개발 배포 : 마이크로 소프트 JSON 문서 구문 분석 및 serialization에 대한 지원이 기본 제공되는 HTTP 서버에 대해 REST 호출 수행 로컬 리디렉션 수신기를 포함하여 OAuth 1 및 2 지원 원격 서비스에 대한 WebSocket 연결 기본 제공 스레드 풀을 비롯한 PPL 기반의 완전 비동기 작업 API Windows Desktop(7+), Windows Server(2012+), 유니버설 Windows 플랫폼, Linux, OSX, Android 및 iOS를 지원. CPP REST SDK 깃허브 : https://github.com/Microsoft/cpprestsdk micros.. 2020. 3. 10.
숫자 를 16진 형식의 문자열로 표현하기. 상황예. uint8_t number = 253; char buf[10]; number 를 문자열 표현시 16진수 형식으로 표현하고 싶다. 즉, 십진수 253 인 경우 16진수 FD 로 표현. 코드. 방법1. sprintf(buf,"%02x",number); 방법2. itoa(number, buf, 16); // 마지막 인자 값 2 : 2진수 , 10 : 10진수, 16 : 16진수. 연관 _tcstol, strtol, wcstol. 16 진수, 2 진수 표현 문자를 10진 정수형으로 변환. 개요 예 : 16진수로 표현된 문자 0040 이라는 문자열이 있을때 이 문자를 10진수 정수로 변환할 수 있다. 아래 코드의 함수 _tcstol 반환값은 10진수 64이다. CString cst_num = _T("00.. 2020. 2. 9.
_tcstol, strtol, wcstol. 16 진수, 2 진수 표현 문자를 10진 정수형으로 변환. 개요 예 : 16진수로 표현된 문자 0040 이라는 문자열이 있을때 이 문자를 10진수 정수로 변환할 수 있다. 아래 코드의 함수 _tcstol 반환값은 10진수 64이다. CString cst_num = _T("0040"); // 10진수 64의 16진수형으로 문자로 표현. _tcstol(cst_num, NULL, 16); // 마지막 인자에 문자열 cst_num 의 진수를 기록한다 본 예에서는 16진수 이므로 16기록. 연관 숫자 를 16진 형식의 문자열로 표현하기. 상황예. uint8_t number = 253; char buf[10]; number 를 문자열 표현시 16진수 형식으로 표현하고 싶다. 즉, 십진수 253 인 경우 16진수 FD 로 표현. 코드. 방법1. sprintf(buf,"%02.. 2020. 2. 9.
C. ASCII 문자열 크기 구하기 // 문자열 수량 반환 함수. // 인자 : ascii string buffer 의 포인터. // 반환값 : 문자열 크기. uint8_t GetLength(uint8_t * buf) { uint8_t len = 0; while(*buf !='\0') { len++; buf++; } return len; } // 활용예. #define MY_STRING "Hello This is string" GetLength((uint8_t*)MY_STRING); 2020. 2. 9.
C. 해시테이블, 딕셔너리 유사기능 컬렉션 간이 구현 . 키값 : 대응값 자료형태. C 언어 자체로는 "키값 : 데이터" 형식으로 접근할 수 있는 데이터 형이 없고 상황에 따라 직접 정의 해서 활용한다. 키값 및 이에 1:1 대응하는 데이터를 가지는 구조이면 되므로 아래 예처럼 구현가능. 범용적인것 구현하려면 방대해지므로 특수 상황에만 활용가능한 형식으로 간이 구현예. 본 예에서는 키값 250,251,252,253 ... 이고 이에 대응하는 값이 메모리 주소값인 경우 typedef struct { uint8_t IndexPage; // key 에 해당. uint32_t Addr; // IndexPage 에 1:1 대응하는 주소값. }ST_DIC_IDXADDR; ST_DIC_IDXADDR stDicIdxAddr[10]; // /// key 에 대응하는 값 반환 받는 함수. uint32_t.. 2020. 1. 20.
C. malloc , free 메모리 동적 할당. 제거. 헤더파일 : stdlib.h void * malloc (uint32_t byte_size) 반환값 성공시 생성된 주소 포인터 실패시 NULL void free(void * ptr) - malloc 으로 생성된 메모리 영역 제거하는것. malloc, free 사용예. 1차원 배열 동적 생성 //예 uint8_t 1차원배열 100개 동적 생성. uint8_t * pui8Arr; pui8Arr = (uint8_t*)malloc(sizeof(uint8_t)*100); // 상기 생성된 메모리블럭 지우기. free((void*)pui8Arr); 2차원 배열 동적 생성 //예 uint8_t 2차원배열 [5][9] 동적 생성. uint8_t ** ppui8Arr; ppui8Arr = (uint8_t**)malloc(.. 2019. 12. 28.
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 문제상황 이전버전의 VC++(예 : VC++6.0 등)를 신규 버전의 VC++(예 : VC++2017 등) 빌드시 오류 메시지 : _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 해결책 ; stdafx.h 에 #inlcude 추가한다. 첫 등록 : 2019년 12월 8일 최종 수정 : 단축 주소 : https://igotit.tistory.com/2414 2019. 12. 8.
C. static 함수 선언. C 에서 함수를 static 으로 선언하는것은 그 함수는 해당 소스파일에서만 사용가능하게 한다. 얻게되는 장점은 동일 함수명이 다른 파일에 있어도 충돌없이 따로 작동함. 따라서, 외부에서도 호출할 함수 외에는 기본 staic 함수로 선언함이 유리하다. 예로 아래 처럼 2개의 파일에서 동일한 함수명 function1 이 있다고 하자. /////////////////////////////////////////////////////////////////////////////////////// //file : other.c void function1() { } /////////////////////////////////////////////////////////////////////////////////////.. 2019. 10. 21.
MFC CMap Class. 등 자료형 자유로운 딕셔너리(사전) 컬렉션. CMap CMap은 자료형이 자유로운 딕셔너리 컬렉션 클래스. CMap Class A dictionary collection class that maps unique keys to values. 복사 templateclass CMap : public CObject Parameters KEY Class of the object used as the key to the map. ARG _ KEY Data type used for KEY arguments; usually a reference to KEY. VALUE Class of the object stored in the map. ARG _ VALUE .. 2019. 5. 24.
calling convention. __cdecl, __stdcall . 호출규약 __cdecl, __stdcall 함수 호출규약이라 부르는 것이며, 2개 의 가장 큰 차이점은 스택 지우기 처리 주체가 다르다는 점. __cdecl : 함수 호출한 곳에서 스택지움. __stdcall : 해당함수가 스택지움. /// __stdcall void __stdcall myFunction() { ... } /// __cdecl void __cdecl myFunction() { ... } //// 명시하지 않으면? __cdecl이 적용됨. void myFunction() { ... } DLL 노출함수에서 __stdcall 지정하는 코드. __declspec(dllexport) int __stdcall myFunction() { ... } /// __stdcall 을 기록하지 않으면 __cdecl 적.. 2019. 5. 13.
memcmp, memcpy, memset 헤더 : string.h int memcmp(주소1, 주소2, 바이트사이즈); 주소1과 주소2를 시작점으로 하여 바이트사이즈 만큼의 메모리 기록 된 값이 같으면 0 , 다르면 0 아닌값 반환. 주소1의 값 주소2의 값 이면 0보다 큰값 반환. void *memcpy(주소1,주소2,바이트사이즈); 주소2를 시작으로 하여 바이트사이즈 만큼의 데이터를 주소1에 복사. 반환값 : 주소1 void *memset(주소,바이트 데이터,바이트사이즈); 주소를 시작으로 바이트 사이즈 만큼 동일한 byte 데이터 기록. 반환값 : 주소 연관 memmove. 배열 시프트. memove(*dest, *src, bytesize) 1. src 를 시작으로 하여 bytes.. 2019. 3. 13.
float 형 변수에 할당된 4바이트 메모리의 각 바이트 단위로 접근하는법. 문제. 변수 선언이 float f_value; 처럼 float 으로 선언되어있어서, 통상적인 실수값을 이 변수에 대입(예 f_value = 3.789f )하여 실수로 활용하지 않고, f_value 에 할당된 메모리 4바이트들의 각 바이트들에 개별적으로 unsigned char 형의 값을 기록하고 각 바이트별로 저장된 값을 활용하고자 하는 경우. 즉, f_value 에 할당되어있는 메모리는 이렇게 생겼다 -> | 1번 바이트 | 2번 바이트 | 3번 바이트 | 4번 바이트 | 위 메모리의 각 바이트 접근하는법. float 형 변수 메모리의 각 바이트 별로 핸들링 하는법. unsigned char 형의 포인터 변수 생성 하고 여기에 f_value 의 주소를 (unsigned char*) 로 형변환한다. un.. 2019. 2. 20.
win32api. MessageBox int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType ); Requirements. Header : winuser.h (include windows.h)Library : user32.lib DLL : user32.dll example codes int DisplayResourceNAMessageBox() { int msgboxID = MessageBox( NULL, (LPCWSTR)L"Resource not available\nDo you want to try again?", (LPCWSTR)L"Account Details", MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 ); .. 2018. 9. 5.


 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5