Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用Win32 API连接字符串_C_String_Winapi_Visual C++_Concatenation - Fatal编程技术网

C 使用Win32 API连接字符串

C 使用Win32 API连接字符串,c,string,winapi,visual-c++,concatenation,C,String,Winapi,Visual C++,Concatenation,使用Win32连接字符串的最佳方法是什么?如果理解正确,通常的C方法是使用strcat,但由于Win32现在处理Unicode字符串(也称为LPWSTR),我想不出一种方法让strcat处理这个问题 是否有此功能,还是我应该自己编写?有ANSI和Unicode变体。实际上,lstrcat只是一个宏,定义为lstrcat或lstrcatW 这些函数可通过导入kernel32.dll获得。如果您试图完全避免使用C运行时库,这将非常有用。在大多数情况下,您可以使用roy评论的wcscat或\u tcs

使用Win32连接字符串的最佳方法是什么?如果理解正确,通常的C方法是使用
strcat
,但由于Win32现在处理Unicode字符串(也称为
LPWSTR
),我想不出一种方法让
strcat
处理这个问题

是否有此功能,还是我应该自己编写?

有ANSI和Unicode变体。实际上,
lstrcat
只是一个宏,定义为
lstrcat
lstrcatW

这些函数可通过导入
kernel32.dll
获得。如果您试图完全避免使用C运行时库,这将非常有用。在大多数情况下,您可以使用roy评论的
wcscat
\u tcscat


也考虑 StruSur.H./Code >函数,例如这些函数都是ANSI和Unicode变量,但它们有助于防止缓冲区溢出。

有WCSPOTE()和WCSnCATE()@ RoRuthangang86-应该是答案,而不是A。comment@Seth:不太可能,因为它们不是Win32 API。lstrcat是“禁止的”API在Microsoft内部,因为它不能安全使用(lstrcat捕获可能引入安全漏洞的异常)。坚持使用StringCchCat。@Larry:我不会用它来处理受污染的数据,但是如果你检查了输出缓冲区是否足够大,它怎么会不安全呢?即使缓冲区没有受到污染,也有风险——如果出于某种原因,副本的源或目标被破坏,你的应用不会崩溃,这意味着你找不到导致损坏的错误。顺便说一句,StringCchCatEx还有一个额外的好处,它返回一个指向字符串结尾的指针,这可能是一个perf win。本文说strcat()是不安全的: