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


Функция StringCbCatNA (strsafe.h)

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

StringCbCatN является заменой следующих функций:

Синтаксис

STRSAFEAPI StringCbCatNA(
  [in, out] STRSAFE_LPSTR  pszDest,
  [in]      size_t         cbDest,
  [in]      STRSAFE_PCNZCH pszSrc,
  [in]      size_t         cbToAppend
);

Параметры

[in, out] pszDest

Тип: LPTSTR

Буфер назначения, содержащий строку, которая должна быть сцеплена с pszSrc, и получит результирующую строку. Строка в pszSrc, до cbMaxAppend байтов, добавляется в конец строки в pszDest.

[in] cbDest

Тип: size_t

Размер целевого буфера в байтах. Это значение должно учитывать длину pszSrc плюс длину pszDest или cbMaxAppend (независимо от того, что меньше) плюс завершающийся пустой символ. Максимально допустимое число байтов — STRSAFE_MAX_CCH * sizeof(TCHAR).

[in] pszSrc

Тип: LPCTSTR

Исходная строка, которая должна быть объединена в конец pszDest. Эта исходная строка должна быть завершена null.

[in] cbToAppend

Тип: size_t

Максимальное число байтов, добавляемых к pszDest.

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

Тип: HRESULT

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

Возвращаемый код Описание
S_OK
Исходные данные были представлены, строки были сцеплены без усечения, а результирующий целевой буфер завершается значение NULL.
STRSAFE_E_INVALID_PARAMETER
Значение в cbDest больше максимального допустимого значения или буфер назначения уже заполнен.
STRSAFE_E_INSUFFICIENT_BUFFER
Сбой операции объединения из-за нехватки буферного пространства. Целевой буфер содержит усеченную, завершаемую null версию предполагаемого результата. В ситуациях, когда усечение приемлемо, это может не обязательно рассматриваться как условие сбоя.
 

Обратите внимание, что эта функция возвращает значение HRESULT, в отличие от функций, которые он заменяет.

Замечания

По сравнению с функциями, которые он заменяет, StringCbCatN обеспечивает дополнительную обработку буферов в коде. Низкая обработка буфера связана со многими проблемами безопасности, включающими переполнение буфера. StringCbCatN всегда завершает значение NULL и никогда не переполняет допустимый целевой буфер, даже если содержимое исходной строки изменяется во время операции.

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

Ни pszSrc, ни pszDest не должны быть NULL. Если требуется обработка значений указателя на строку NULL, см. StringCbCatNEx.

StringCbCatN можно использовать в универсальной форме или в более конкретных формах. Тип данных строки определяет форму этой функции, которую следует использовать.

Тип данных строки Строковый литерал Функция
char "string" StringCbCatNA
TCHAR TEXT("string") StringCbCatN
WCHAR L"string" StringCbCatNW
 

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP с пакетом обновления 2 (SP2) [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 с пакетом обновления 1 (SP1) [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка strsafe.h

См. также

Справочник

StringCbCat

StringCbCatNEx

StringCchCatN