Поделиться через


функция StringCchPrintf_lExA (strsafe.h)

Записывает отформатированные данные в указанную строку. Размер целевого буфера предоставляется функции, чтобы убедиться, что она не записывает в конец этого буфера.

StringCchPrintf_lEx похож на StringCchPrintfEx но включает параметр для сведений о языковом стандарте.

Синтаксис

STRSAFEAPI StringCchPrintf_lExA(
  [out]           STRSAFE_LPSTR                                  pszDest,
  [in]            size_t                                         cchDest,
  [out]           STRSAFE_LPSTR                                  *ppszDestEnd,
  [out, optional] size_t                                         *pcchRemaining,
  [in]            DWORD                                          dwFlags,
  [in]            _Printf_format_string_params_(2)STRSAFE_LPCSTR pszFormat,
  [in]            _locale_t                                      locale,
                  ...                                            
);

Параметры

[out] pszDest

Буфер назначения, который получает отформатированную строку, завершающуюся значением NULL, созданную из pszFormat и его аргументов.

[in] cchDest

Размер целевого буфера в символах. Это значение должно быть достаточно большим, чтобы вместить последнюю отформатированную строку плюс 1, чтобы учесть завершающий символ NULL. Максимально допустимое число символов — STRSAFE_MAX_CCH.

[out] ppszDestEnd

Адрес указателя на конец pszDest. Если ppszDestEnd не являетсяNULL, а все данные копируются в целевой буфер, это указывает на конечный символ NULL в конце строки.

[out, optional] pcchRemaining

Количество неиспользуемых символов в pszDest, включая завершающийся символ NULL. Если pcchRemainingNULL, количество не сохраняется или возвращается.

[in] dwFlags

Одно или несколько следующих значений.

Ценность Значение
STRSAFE_FILL_BEHIND_NULL
0x00000200
Если функция выполнена успешно, используется низкий байт dwFlags (0) для заполнения неинициализированной части pszDest после конца символа NULL.
STRSAFE_IGNORE_NULLS
0x00000100
Обработайте значений NULL строк, таких как пустые строки (TEXT("")).
STRSAFE_FILL_ON_FAILURE
0x00000400
Если функция завершается ошибкой, используется низкий байт dwFlags (0) для заполнения всего буфера pszDest, а буфер завершается значением NULL. В случае сбоя STRSAFE_E_INSUFFICIENT_BUFFER любая усеченная строка перезаписывается.
STRSAFE_NULL_ON_FAILURE
0x00000800
Если функция завершается ошибкой, pszDest имеет пустую строку (TEXT("")). В случае сбоя STRSAFE_E_INSUFFICIENT_BUFFER любая усеченная строка перезаписывается.
STRSAFE_NO_TRUNCATION
0x00001000
Как и в случае STRSAFE_NULL_ON_FAILURE, если функция завершается ошибкой, pszDest имеет пустую строку (TEXT("")). В случае сбоя STRSAFE_E_INSUFFICIENT_BUFFER любая усеченная строка перезаписывается.

[in] pszFormat

Строка формата. Эта строка должна быть завершена значением NULL. Дополнительные сведения см. в синтаксисе спецификации формата.

[in] locale

Объект языкового стандарта. Дополнительные сведения см. в _create_locale.

...

Аргументы, которые необходимо вставить в строку pszFormat.

Возвращаемое значение

Эта функция может возвращать одно из следующих значений. Настоятельно рекомендуется использовать макросы SUCCEEDED и FAILED макросы для проверки возвращаемого значения этой функции.

Возвращаемый код Описание
S_OK
Было достаточно места для копирования результата в pszDest без усечения, и буфер завершается значением NULL.
STRSAFE_E_INVALID_PARAMETER
Значение в cchDest равно 0 или больше, чем STRSAFE_MAX_CCH, или целевой буфер уже заполнен.
STRSAFE_E_INSUFFICIENT_BUFFER
Операция копирования завершилась ошибкой из-за нехватки буферного пространства. В зависимости от значения dwFlags, целевой буфер может содержать усеченную, завершаемую null версию предполагаемого результата. В ситуациях, когда усечение приемлемо, это может не обязательно рассматриваться как условие сбоя.

Замечания

Поведение не определено, если строки, на которые указывает pszDest, pszFormatили любые строки аргументов перекрываются.

Ни pszFormat, ни pszDest не должны быть null, если флаг STRSAFE_IGNORE_NULLS не указан, в этом случае оба могут быть NULL. Однако ошибка из-за нехватки места может быть возвращена, даже если значения NULL игнорируются.

Чтобы использовать эту функцию, необходимо определить следующий макрос в файле заголовка перед включением StrSafe.h.

#define STRSAFE_LOCALE_FUNCTIONS

Заметка

Заголовок strsafe.h определяет StringCchPrintf_lEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2008 [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка strsafe.h