C++15 [C++] 숫자 세자리 수 마다 콤마(,) 찍기 return type : CString 2가지 방법 1. for 문으로 직접 만든다 CString CImageTransferSenderSimDlg::ReturnComma(CString arg_buf) { CString buf; int nCount = 0; for (int i = arg_buf.GetLength()-1; i >= 0; i--) { nCount++; buf = arg_buf[i] + buf; if ((nCount % 3 == 0) && (i != 0)) { buf = _T(",") + buf; } } return buf; } 2. API 함수 (GetNumberFormat()) 사용 CString CImageTransferSenderSimDlg::ReturnComma(CString arg_b.. 2022. 2. 11. [C++] std::numeric_limits<T>::epsilon 사용해서 부동소수점 equlity 비교하기 부동 소수점 타입의 고유 특성은 비교가 예상이 돼도 equality는 잘 쓰지 않는다고 한다. 즉, 부동소수점은 0과 같다(==) 같지 않다(!=) 를 직간접적으로 쓰지 않는 게 좋다는 것 기계 엡실론을 쓰면 된다. std::numeric_limits::epsilon() float fVal1; float fVal2; if(fVal1==fVal2) {} // 지양 if(fVal1-fVal2==0.0f) {}// 지양 if(fabs(fVal1-fVal2) > std::numeric_limits::epsilon()){ std::cout 2022. 2. 11. [C6386] 'a'에 쓰는 동안 버퍼 오버런 발생 원인 포인터 동적 할당할 때 생기는 경고문 참 친절하게 쓰기 가능한 범위까지 알려준다. 버퍼 오버플로.. 말 그대로 개발자가 정의한 범위 밖의 공간에 접근했을 때이다. 본인은 변수 이름 까먹었을 때 이 경고 나온다.... 예를 들어 이런식으로 buf[500]으로 정의했는데 fgetws에서 1000이라고 했다. 빌드는 잘 돼서 문제 없어 보일 수 있는데 VS가 친절하게 주의하라고 경고 띄우고 해결 방안도 제시해 줬으니 되도록 우회하는 것보단 해결하는 게 좋을 것 같다. *우회 방법: #pragma warning(disable:6386)* 해결 fgetws(buf, 500, f); 으로 수정 2022. 1. 22. 이전 1 2 3 4 다음