Безопасная альтернатива _vscwprintf - PullRequest
1 голос
/ 16 ноября 2011

В MSVC ряд строковых функций предлагают оригинальную, безопасную версию и strsafe версию.Например, sprintf, sprintf_s и StringCchPrintf - все эквиваленты, увеличивающиеся в безопасности (по некоторым показателям).

Теперь у меня есть немного кода, который делает:

int bufsize = _vscwprintf(fmt, args) + 1;
std::vector<wchar_t> buffer(bufsize);

int len = _vsnwprintf_s(&buffer[0], bufsize, bufsize-1, fmt, args);

Чтобы выделить буфер правильного размера.

Просматривая функции strsafe, я нашел альтернативу для _vsnwprintf_s, но не для _vscwprintf.Проверка Google, похоже, ничего не возвращала.

Существует ли strsafe-способ написания этого куска кода или альтернативных функций для обоих, которые мне не хватает, или приемлемо смешивание оригинальной и strsafe-функций?(о текущем способе предупреждения о безопасности не выдается, на / w4 с PREfast all rules)

1 Ответ

2 голосов
/ 16 ноября 2011

_vscwprintf () просто вычисляет размер массива wchar_t [], который вам нужен для безопасного форматирования строки, на самом деле он ничего не записывает в буфер. Соответственно, вам не нужно, и нет безопасной версии функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...