[C++] iterator 기반의 stl 사용에 일반 배열 사용시 warning 4996

dst 가 즉 , 목적지가 stl 이 아닌 일반 메모리배열이라면

4996warning이 뜬다.

warning을 제거하는 방법은

#include<iterator>
using namespace stdext;

그리고 checked_array_iterator를 사용해서 인자를 넘겨주면 된다.

TCHAR* TString::ConvertWCharLinear(char* str) {
 wstring wstr = CA2W(str);
 TCHAR* tstr = (TCHAR*)calloc(wstr.size() + 1, sizeof(TCHAR));
 std::copy(wstr.begin(), wstr.end(), checked_array_iterator(tstr,wstr.size()+1));
 return tstr;
}

추가 기술

C++11 에서는 전역 함수 beginend 가 나왔다.
이를 사용하면 일반 배열에 대해서도 반복자를 제공한다.