Programming/C++

대학생때 자연어 처리에 관해서는 상당히 깊게 생각해 본 터이라 전문가는 아니더라도 기초적인 지식에 대해서는 상당히 꿰뚫고 있으나, 이미지 처리에 관해서는 전혀 문외하기에 (대충 원리만 추측할 뿐) OpenCV 예제중 Digit_svm 이 있기에 이를 분석하는 글을 작성 해 본다. 해당 글은 전문적인 분석이 아니며, 짧은 시간을 투자한 글이므로 정확하지 않을 수 있다. 지적 댓글은 언제나 환영이다. 우선 Digit_svm 이란 Digit = 숫자, SVM = Support Vector Machine 으로서 숫자의 패턴을 통해 숫자를 판별하는 방법을 배우는 OpenCV 의 예제이다. 보통은 Python 을 통해 많이 작업하는데 이 글은 C++ 기준으로 예제에 관해 간략하게 해설한다. OpenCV 를 CMak..
#include #include #include #pragma comment(lib, "ws2_32") #define PORT 28888 #define PACKET_SIZE 36 #define SERVER_IP "127.0.0.1" using std::cout; using std::endl; void server() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET hListen; hListen = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); SOCKADDR_IN tListenAddr; tListenAddr.sin_family = AF_INET; tListenAddr.sin_port = htons(PORT);..
C++ 에서 함수를 인자로 전달하는 방법 | C++ 에서 함수를 인자로 전달하기 C++11 이전에는 다른 함수의 인자로 함수를 전달하는 방법은 함수 포인터가 유일했습니다. C언어에서 이어져온 방식이기 때문에 C개발자들에게는 크게 불편하 mynameisdabin.tistory.com 해당 포스팅을 살펴보다 람다식 에서 햇갈릴만한 내용이 있기에 짧게 정리한다.​ 우선 람다식은 다음과 같이 작성된다.​ [캡처절] (매개변수) mutable -> 반환형식 { 함수내용 } ​ 1. 캡쳐절은 외부 변수를 가져다 쓸 수 있는 공간이고,​ 2. 매개변수는 말 그대로 함수 선언시 필요한 매개 변수이다.​ 3. mutable 은 함수 내에서 외부 변수를 수정할 수 있게 해 주는 옵션이고.​ 4. 반환형식과 함수 내용은 아..
자료를 찾아보면 emplace_back 이 더 우수한 녀석이라거나 생성자 호출 차이라거나 그런 말들이 많이 있으나. 일단 최신 컴파일러 관점에서는 둘 다 아닌것 같다. emplace_back 과 push_back 의 차이 item 타입의 생성자가 타입을 인자로 받는다면? push_back 함수는 '객체' 를 집어 넣는 형식으로, 객체가 없이 삽입을 하려면 "임시객체 (rvalue) " 가 있어야 합니다. 또는 암시적 형변환이 가능하다면, openmynotepad.tistory.com 엄준식사생팬 님의 블로그에서 해당 코드를 참조해서 G++ 9 , Visual Studio 2019 (ISO C++14 표준) 에서 테스트 해 보았지만 결과는 같았다. 즉, 이유는 모르겠지만 STD 코드가 수정되었음을 추론해 ..
C4819 Warning 의 경우는 파일의 저장 포맷 형식이 UTF-8 With BOM 으로 설정되지 않아서 발생하는 문제이다. 여기서 UTF-8 은 그냥 같은 UTF-8 이 아니라, UTF-8 Without BOM 과 UTF-8 With BOM 으로 나뉘어 진다. .cpp, .hpp 파일을 저장 할 때, 한글, 중국어 등 multi-byte characters 가 하나라도 들어간다면 반드시 UTF - 8 With BOM(Signature) 으로 설정해야만, 해당 경고가 없어진다. 참고로, 해당 오류는 오지랖 넓은 '경고' 메세지가 아니다. 해당 문제로 인해 컴파일 단계에서는 문제가 없을 지 몰라도 Runtime 단계에서 디버그 해볼 시에 한글 글자가 깨지는 모습을 살펴 볼 수 있다. UTF-8 with..
C++ 에는 constexpr 이라는 예약어가 있다. 보통 학생들은 잘 모르는 예약어인데, 왜냐면 딱히 이것까지 가르칠 필요는 없기 때문이랄까... constexpr 에 대한 간단한 예시를 들면 다음과 같은 것이 있다. 1 2 3 int cc = 10; const int a = cc; // OK constexpr int b = cc; // Fail cs 보면 알겠지만 const 키워드는 runtime 에 결정되도 상관이 없는 반면 constexpr 의 경우는 반드시 compile 시간에 결정되어야 한다는 차이점이 있다. 때문에 나는 모두의 코드 블로그 에서 예제로 constexpr 을 사용하는것을 참조해 왔는데 다음과 같은 코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include #include #include using exe_ = void(*)(); //typedef void(*exe_)(); void execute() { printf("개굴"); } void timer(int time, exe_) { exe_ exe = execute; while (time) { Sleep(3000); exe(); } } int main() { timer(30, execute); } cs 함수 포인터는, 생각만큼 자주 사용하는 기법이 아니라서 깜빡 잊어버리기 쉽다. 위 코드를 잘 살펴보면 C++ 의 기본에 대해서 다시 한번 짚어 볼 수 있다. using 으로 exe_ 라..
개인적으로 존경하는 '리누스 토르발즈' 는 C++ 을 '끔찍한 언어' 라고 지칭했다. 나도 개발 시작한지 6개월도 안 되었을 때는 이를 이해하기 힘들었으나, 각종 기교에 대해서 많이 익히면 익힐수록.. '와... 진짜 더럽다' 라고 욕하고 있더라.. ㅠㅠ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using namespace std; void hi(int temp_) { cout
현재 아주 간단한 프로그램을 제작중에 문뜩 의문이 생겨 포스팅 해 본다. Windows 에서는 system() , WinExec() 함수를 통해, 리눅스에서는 system() 함수를 통해 보통 명령어를 실행한다. 하지만 문제는 명령어를 실행 했을 때, 커맨드 상에 출력되는 값을 받아오고 싶을때는 어떻게 해야 할 지 난감하다. 이에 대한 대안 코드가 StackOverFlow 에 기재되어 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include #include #include #include #include std::string exec(const char* cmd) { char buffer[128]; ..
Determine .lib / .dll with header file I have 3rd party library in my program. For example : #INCLUDE #INCLUDE int main(int argc, char** argv) { // some stuff } How do i know stackoverflow.com 결론적으로 말하면 손쉽게 찾을 수 없다. 주석 등을 이용해 추측해야 하며, 자동으로 어떤 헤더와, dll, lib 가 매칭되는지 알 수 있는 방법은 없으며, 이는 반대 역시 마찬가지이다. (dll, lib 로 .h 를 찾기) 가장 좋은 방법은 해당 동적 라이브러리를 배포한 제작자에게 물어 보는 것이다.
Cyp
'Programming/C++' 카테고리의 글 목록 (2 Page)