Функция StringCchCat - это замена функции strcat. Размер, в символах, целевого буфера назначается в функцию для того, чтобы гарантировать, что StringCchCat не запишет мимо конца этого буфера.
HRESULT StringCchCat( LPTSTR pszDest, size_t cchDest, LPCTSTR pszSrc ); |
[in, out] Указатель на буфер, содержащий в себе строку, c которой строка pszSrc объединяется, и который содержит всю результирующую строку. Строка в pszSrc добавляется в конец строки в pszDest.
cchDest[in] Размер целевого буфера, в символах. Это значение должно равняться длине pszSrc, плюс длина pszDest плюс 1, чтобы учесть длину обеих строк и символ завершающего нуля. Максимальное число символов допускается до STRSAFE_MAX_CCH.
pszSrc[in] Указатель на буфер, содержащий в себе исходную строку, которая объединяется до конца pszDest. Эта исходная строка должна быть завершена символом конца строки ('\0').
Значение |
Предназначение |
| S_OK | Исходные данные присутствовали, строки были полностью объединены без усечения и итоговый результат целевого буфера завершен символом конца строки ('\0'). |
| STRSAFE_E_INVALID_PARAMETER | Значение в cchDest или 0 или больше, а не STRSAFE_MAX_CCH, или целевой буфер уже заполнен. |
| STRSAFE_E_INSUFFICIENT_BUFFER | Операция конкатенации завершалась ошибкой из-за недостаточного пространства буфера. Целевой буфер содержит обрезанную версию с нулевым символом в конце предполагаемого результата. В ситуациях, где усечение является приемлемым, это может не обязательно быть замечено как условие сбоя. |
Функция StringCchCat предусматривает дополнительную обработку для правильной работы буфера в Вашем коде. Недостаточная обработка буфера влечет за собой многие проблемы обеспечения безопасности, которые вызывают переполнение буфера. StringCchCat всегда завершает символом конца строки ('\0') целевой буфер ненулевой длины.
StringCchCat может использоваться в своей общей форме, или в специальной, такой как StringCchCatA (для строк ANSI) или StringCchCatW (для строк Unicode). Форма использования определяется Вашими данными.
Тип данных строки |
Литерал строки |
Функция |
|---|---|---|
| char | "string" | StringCchCatA |
| TCHAR | TEXT("string") | StringCchCat |
| WCHAR | L"string" | StringCchCatW |
Функция StringCchCat и её варианты ANSI и Unicode - замена для этих функций:
Поведение неопределенное, если строки указанные при помощи pszSrc и pszDest - перекрываются.
Ни pszSrc, ни pszDest не должны быть NULL. См. описание StringCchCatEx, если Вам потребуется обработка значений указателя пустой строки.
Обзор Строки, Функции, используемые строками, StringCbCat, StringCchCatEx, StringCchCatN
Размещение и совместимость StringCchCat |
||
| К | 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. | |
| Замечания по платформе | Не имеется | |