Более безопасная функция копирования строки в VС ++, но как обрабатывать TCHAR *? - PullRequest
0 голосов
/ 06 мая 2020

Я исправлял все предупреждения C4996 , что является предложением MS. заменен sprintf на sprint_s заменен _tcscpy на _tcscpy_s

Он работает без изменения параметра с TCHAR []

TCHAR* test; // a string argument from CLR project
TCHAR target[100];
_tcscpy(target, test); 
_tcscpy_s(target, test); // both works fine.

, но как насчет TCHAR *? Я не знаю, насколько большим будет размер буфера с TCHAR *

TCHAR* test; // a string argument from CLR project
TCHAR* target;
_tcscpy_s(target, ???, test);

Вот что я изучил:

Но решения нет.

1 Ответ

0 голосов
/ 06 мая 2020

Я написал себе ответ с советом от @ dxiv.

TCHAR * в TCHAR *

TCHAR* src= new TCHAR[??]; // check whether it is initialized.
TCHAR* dest= new TCHAR[??];
const int BUFFER= _tsclen(src) + 1;
_tcscpy_s(dest, BUFFER, src);

TCHAR [] в TCHAR *

TCHAR src[??] = _T("something...");
TCHAR* dest= new TCHAR[??];
const int BUFFER= _countof(src);
_tcscpy_s(dest, BUFFER, src);

TCHAR [] в TCHAR []

TCHAR src[??] = _T("something...");
TCHAR dest[??] = _T("");
_tcscpy_s(dest, src);
...