Функция StringCbCatN - это замена для функции strncat. Размер целевого буфера, в байтах, предназначается для функции, чтобы гарантировать, что StringCbCatN не запишет помимо конца этого буфера.
HRESULT StringCbCatN( LPTSTR pszDest, size_t cbDest, LPCTSTR pszSrc, size_t cbMaxAppend ); |
[in, out] Указатель на буфер, содержащий в себе строку, с которой объединяется строка pszSrc, и который содержит всю результирующую строку. Строка в pszSrc, до cbMaxAppend байтов, добавляется в конец строки в pszDest.
cbDest[in] Размер целевого буфера, в байтах. Это значение должно принять во внимание длину pszSrc, или плюс длину pszDest, или плюс cbMaxAppend (какой бы маленькой она не была) плюс символ завершающего нуля. Максимальное число байтов допускается STRSAFE_MAX_CCH * sizeof (TCHAR).
pszSrc[in]Указатель на буфер, содержащий в себе исходную строку, которая объединяется до конца pszDest. Эта исходная строка должна быть завершена символом конца строки ('\0').
cbMaxAppend[in] Максимальное число байтов, которое добавляется в конец в pszDest.
Обратите внимание! на то, что функцией возвращается значений HRESULT в противоположность функции strncat, которая возвращает указатель. Настоятельно рекомендуется, что вы использовали макроопределение SUCCEEDED и FAILED, чтобы проверить возвращаемое значение этой функции. |
S_OK | Исходные данные присутствовали, строки были скопированы без усечения, а итоговый результат целевого буфера завершается символом конца строки ('\0'). |
STRSAFE_E_INVALID_PARAMETER | Значение в cbDest больше максимально возможного значение, или целевой буфер уже заполнен. |
STRSAFE_E_INSUFFICIENT_BUFFER | Операция конкатенации (объединения) завершилась ошибкой из-за недостаточного пространства буфера. Целевой буфер содержит обрезанную версию строки с нулевым символом в конце предполагаемого результата. В ситуациях, где усечение является приемлемым, это может не обязательно быть замечено как условие сбоя. |
Функция StringCbCatN предусматривает дополнительную обработку для правильной обработки буфера в вашем коде. Неправильная обработка буфера влечется за собой многие проблемы обеспечения безопасности, которые вызывают переполнение буфера. StringCbCatN всегда завершает символом конца строки ('\0') целевой буфер ненулевой длины.
Функция StringCbCatN может быть использована в своей унифицированной форме, или специально как StringCbCatNA (для строк ANSI) или StringCbCatNW (для строк Unicode). Форма использования определяется вашими данными.
Тип данных строки |
Литерал строки |
Функция |
---|---|---|
char | "string" | StringCbCatNA |
TCHAR | TEXT("string") | StringCbCatN |
WCHAR | L"string" | StringCbCatNW |
Функция StringCbCatN и ёе варианты ANSI и Unicode являются заменой для этих функций:
Поведение функции неопределенное, если строки указанные параметрами pszSrc и pszDest частично перекрываются.
Ни pszSrc, ни pszDest не должны быть NULL. См. описание функции StringCbCatEx, если вам требуется обработка значений указателя пустой строки.
Обзор Строки, Функции, используемые строками, StringCchCatN, StringCbCatNEx, StringCbCat
Размещение и совместимость StringCbCatN |
||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Да версии 3.1 |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows Server 2003 | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да версии 3.1 |
в | ||
е | ||
р | ||
Используемая библиотека | strsafe.lib | |
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в | strsafe.h | |
- включено в | - | |
Unicode | Реализуются как версии Unicode и ANSI. | |
Замечания по платформе | Не имеется |