목록언어/C++ (6)
No Rules Rules
코드에서 터미널 명령을 실행하는 경우, 흔히 system 함수를 사용하게 됩니다. 하지만 system 함수의 return은 정수이며 실행 결과에 대한 문자열은 읽어올 수 없습니다. 따라서 명령을 수행하고 그에 따른 결과 문자열은 popen을 통해 획득할 수 있습니다. _popen, _wpopen Microsoft C 런타임(CRT) 라이브러리 함수 및 _wpopen에 대한 참조입니다_popen. learn.microsoft.com std::string CIPSettingDlg::GetResultFromCommand(std::string cmd) { std::string result; FILE* fp(nullptr); const int maxBuffer = 256; char buffer[maxBuffer]..
현재 내 pc의 모든 랜카드 정보 (WiFi 포함) 를 읽기 위한 구문입니다. 복수의 랜카드 정보를 읽을 수 있으므로 어댑터 이름이나 아이피 정보 등을 읽기 위해 활용할 수 있습니다. ULONG flag(0); IP_ADAPTER_INFO adapter_info[50]{ 0 };// 랜카드(어댑터)는 최대 50개가 있다고 가정 PIP_ADAPTER_INFO tmp_adapter_info(nullptr); ULONG adater_info_size(0); PIP_ADDR_STRING addr_string(nullptr); std::vector lists // check buffer size flag = GetAdaptersInfo(nullptr, &adater_info_size);// 모든 어댑터 정보의 b..
STL의 string을 다루다보면 특정 구분자를 통해 파싱이 필요한 경우가 있습니다. 필요할때마다 구글링을 해보면 하나의 구분자를 통해 파싱하는 경우가 많다보니 한번에 다수의 구분자를 통해 파싱을 하는 함수를 직접 구현하여 두고두고 쓰고자 정리합니다. template void stringtok(T& container, const std::string& in, const char* const delimiters = " \t\n") { std::size_t len = in.length(), i = 0, j = 0; while (i < len) { if ((i = in.find_first_not_of(delimiters, i)) == std::string::npos) break; if ((j = in.find..
코드 리뷰를 하거나 팀내 후배들에게 교육을 할때마다 항상 강조하는 말이 있습니다. 코드에 const를 덕지덕지 붙여라! 목적이 있는 변수나 함수를 선언할때는 특히나 더! 왜일까요? 별거 아닌거 같지만 const를 추천할까요? const는 여러 상황에서 사용 가능합니다만 일단 순서대로 얘기해보려고 합니다. 객체의 const 우리가 일반적으로 사용하는 일반 변수에서의 const는 다음과 같은 의미를 갖습니다. int main() { int value1 = 5; // value1이라는 녀석의 값은 5야 value1 = 6; // value1이라는 녀석을 6으로 바꿀래! const int value2 = 10; // value2라는 녀석의 값은 10이긴한데... // 초기식의 값으로 유지할꺼야! value2 =..
앞서 설명드렸던, 흔히들 알고 있는 for문은 다음과 같습니다. for(int idx = 0; idx < 10; ++idx) { ... } C++언어에서는 색다른 for문이 추가되었는데요. 그것은 for each문 입니다. int some_value[10]; for each(int value in some_value) { ... } 특이하게 생겼죠? for each문은 배열의 인자를 하나씩 받아옵니다. 즉, 위 for each문은 10번의 논리식을 수행하게 되고(some_value가 10개라서) 매회마다 value의 값이 변하게 됩니다.(some_value의 첫번째부터 마지막까지) 잠깐! 논리식의 기능에 따라 for each문의 단점(?)이 존재하는데요. 바로 증감식에서 사용된 변수 (첫 예제를 보자면 ..
처음 언어를 배우면 흔히 조건문, 반복문을 시작하게 됩니다. 여기서 반복문이란 말 그대로 "반복"해서 무언가를 동작하게 할때 사용됩니다. C언어에서 배우는 반복문은 보통 아래와 같죠. int idx; for (idx = 0; idx < 10; ++idx) { ... } 또는 for (int idx = 0; idx < 10; ++idx) { ... } 입니다. 잠깐! 두 가지의 예제에서 idx를 생성하는 곳이 서로 다른 것을 알 수 있습니다. 왜그럴까요? 여기에는 C언어의 역사가 존재합니다. 1999년도는 C언어를 개정한 해입니다. 쉽게 말해 "현대의 C언어는 이렇게 하겠어!" 라고 획을 그은 해인데요. 이때 개정된 C언어를 통상 C99 라고 합니다. 즉, C99 이전과 이후로 C언어는 나뉜다고 할 수 있..