предварительный расчет длины строки для версий va_list _snprintf / _snwprintf - PullRequest
1 голос
/ 29 марта 2011

Существует ли версия следующего кода в стиле va_list для безопасного выполнения неусеченного sprintf:

// format a char buffer
int size = 1 + _snprintf(NULL, 0, "%d", 132);
std::vector<char> buffer (size);
sprintf_s(&buffer[0], buffer.size (), "%d", 132);

// format a wchar_t buffer
int wsize = 1 + _snwprintf(NULL, 0, L"%d", 132);
std::vector<wchar_t> wbuffer (wsize);
swprintf_s(&wbuffer[0], wbuffer.size (), L"%d", 132);

Насколько я могу судить из документации и экспериментов, все функции _vsnprintf не возвращают вычисление длины, а только усекают или генерируют ошибку. Есть ли альтернатива?

1 Ответ

3 голосов
/ 29 марта 2011

Visual Studio предоставляет функцию _vscprintf для проверки количества буфера, необходимого для хранения результирующей строки.

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