Функция StringCbPrintfExA (strsafe.h)
Записывает отформатированные данные в указанную строку. Размер целевого буфера предоставляется функции, чтобы убедиться, что она не записывает в конец этого буфера.
StringCbPrintfEx добавляет к функциям StringCbPrintf, возвращая указатель на конец конечной строки, а также количество байтов, оставшихся неиспользуемыми в этой строке. Флаги также могут передаваться функции для дополнительного элемента управления.
StringCbPrintfEx является заменой следующих функций:
Синтаксис
STRSAFEAPI StringCbPrintfExA(
[out] STRSAFE_LPSTR pszDest,
[in] size_t cbDest,
[out, optional] STRSAFE_LPSTR *ppszDestEnd,
[out, optional] size_t *pcbRemaining,
[in] DWORD dwFlags,
[in] STRSAFE_LPCSTR pszFormat,
...
);
Параметры
[out] pszDest
Тип: LPTSTR
Буфер назначения, который получает отформатированную строку, завершающуюся значением NULL, созданную из pszFormat и его аргументов.
[in] cbDest
Тип: size_t
Размер целевого буфера в байтах. Это значение должно быть достаточно большим, чтобы вместить последнюю отформатированную строку, а также завершающий символ NULL. Максимально допустимое число байтов — STRSAFE_MAX_CCH * sizeof(TCHAR)
.
[out, optional] ppszDestEnd
Тип: LPTSTR*
Адрес указателя на конец pszDest. Если ppszDestEnd не являетсяNULL, а все данные копируются в целевой буфер, это указывает на конечный символ NULL в конце строки.
[out, optional] pcbRemaining
Тип: size_t*
Количество неиспользуемых байтов в pszDest, включая те, которые используются для завершения символа NULL. Если pcbRemainingnull, счетчик не сохраняется или возвращается.
[in] dwFlags
Тип: DWORD
Одно или несколько следующих значений.
[in] pszFormat
Тип: LPCTSTR
Строка формата. Эта строка должна быть завершена значением NULL. Дополнительные сведения см. в синтаксисе спецификации формата.
...
Аргументы, которые необходимо вставить в строку pszFormat.
Возвращаемое значение
Тип: HRESULT
Эта функция может возвращать одно из следующих значений. Настоятельно рекомендуется использовать макросы SUCCEEDED и FAILED макросы для проверки возвращаемого значения этой функции.
Возвращаемый код | Описание |
---|---|
|
Для копирования результата достаточно места для копирования в pszDest без усечения, а буфер завершается значением NULL. |
|
Значение в cbDest равно 0 или больше, чем STRSAFE_MAX_CCH * sizeof(TCHAR) , или целевой буфер уже заполнен.
|
|
Операция копирования завершилась ошибкой из-за нехватки буферного пространства. В зависимости от значения dwFlags, целевой буфер может содержать усеченную, завершаемую null версию предполагаемого результата. В ситуациях, когда усечение приемлемо, это может не обязательно рассматриваться как условие сбоя. |
Обратите внимание, что эта функция возвращает значение HRESULT, в отличие от функций, которые он заменяет.
Замечания
По сравнению с функциями, которые он заменяет, StringCbPrintfEx обеспечивает дополнительную обработку буфера в коде. Низкая обработка буфера связана со многими проблемами безопасности, включающими переполнение буфера. StringCbPrintfEx всегда завершает буфер назначения ненулевой длины.
Поведение не определено, если строки, на которые указывает pszDest, pszFormatили любые строки аргументов перекрываются.
Ни pszFormat, ни pszDest не должны быть null, если флаг STRSAFE_IGNORE_NULLS не указан, в этом случае оба могут быть NULL. Однако ошибка из-за нехватки места может быть возвращена, даже если значения NULL игнорируются.
StringCbPrintfEx можно использовать в универсальной форме или в более конкретных формах. Тип данных строки определяет форму этой функции, которую следует использовать.
Тип данных строки | Строковый литерал | Функция |
---|---|---|
char | "string" | StringCbPrintfExA |
TCHAR | TEXT("string") | StringCbPrintfEx |
WCHAR | L"string" | StringCbPrintfExW |
Заметка
Заголовок strsafe.h определяет StringCbPrintfEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP с пакетом обновления 2 (SP2) [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2003 с пакетом обновления 1 (SP1) [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | strsafe.h |
См. также
Справочник