C++(3)
-
C++ wchar unicode utf-8 utf-32
Unicode 는 문자를 메모리에 저장할 때 어떤 값으로 저장할지 정해둔 코드 체계 중 하나 이다.Unicode에서 문자 하나를 몇 bit 로 표현하느냐에 따라서 8bit 즉 1byte씩 문자에 따라 여러 bytes로 표현될 수 있는, 가변 길이로 표현하는 것이 utf-8이고, 문자당 32bit 고정 길이로 표현하는 것이 utf-32 이다. utf-8 포맷으로 저장된 아래와 같은 cpp 소스가 있을 때, std::string str("가나다") 와 같이 작성하면, str 에 utf-8 로 "가나다" 가 저장되게 되고, str.size() 해보면 9 가 나온다. 이는 한글 unicode경우 utf-8 형식에서는 글자당 3 bytes 차지하기 때문이다.std::setlocale(LC_ALL, ""); //..
2024.09.06 -
C 혹은 C++ 에서 실행중인 파일 경로 구하기
Linux 상에서는 process id가 1234가 일 경우 /proc/1234/exe 에 전체 실행 파일명 포함 경로를 알 수 있고, 여기서 실행파일이 위치한 폴더명을 뜯어낸다.bool get_exepath(std::string& ret){ char arg1[20]; char exepath[1024] = {0}; snprintf(arg1,20,"/proc/%d/exe",getpid()); if (readlink(arg1, exepath, 1024) Windows에서는 GetModuleFileNameW() 을 이용 실행 파일명 포함 경로를 알 수 있고, 이를 이용 실행파일이 위치한 폴더명을 알아낼 수 있다. 아래의 예는 이렇게 구한 전체 path에 실행파일이 있는 실행폴더내 "m..
2024.08.27 -
Python과 C 혹은 C++ 연동 사용하기
Python을 사용하다보면 어떠한 목적으로 C혹은 C++ 쪽에서 작성한 코드와 연동하여 사용할 필요가 있다. 이는 성능이슈로 C, C++를 사용하든, 아니면 python 코드의 경우 코드를 완벽하게 숨길 수 없어 숨겨야하는 핵심 코드가 있든... 아무튼 C, C++ 와 Python 간의 연동을 위한 ctypes 라는 모듈이 있는데, 기본적으로 C 로 작성된 코드들을Python script에서 사용할 수 있도록 해준다. 자세히는 아래 url을 참고한다.https://docs.python.org/ko/3/library/ctypes.html 아래는 C/C++ 모듈에서 JPG 파일을 읽은 후 디코딩한 RGB 이미지를 Python으로 전달해서 화면에 표시하기 위해서 PIL 모듈의 Image 객체를 만드는 예제이..
2024.08.27