当前位置: 代码迷 >> VC >> 关于使用StringCbCat的有关问题,
  详细解决方案

关于使用StringCbCat的有关问题,

热度:1142   发布时间:2013-02-25 00:00:00.0
关于使用StringCbCat的问题,高手请进!
代码如下所示。最后MyString的值为什么不是 "aaabbb "而是 "aaa ",即StringCbCat返回值为S_OK,但是MyString的值没有变?

#include   strsafe.h
....

char   MyString[128];
HRESULT   Res;

int   i   =   sizeof(MyString);
Res=StringCbCopy((STRSAFE_LPWSTR)   MyString,   sizeof(MyString),   (STRSAFE_LPWSTR)   "aaa ");
if   (Res   !=   S_OK)  
{
printf( "StringCbCopy   Failed:   %s\n ",   MyString);
return;
}  

Res=StringCbCat((STRSAFE_LPWSTR)   MyString,sizeof(MyString),   (STRSAFE_LPWSTR)   "bbb ");  
if   (Res   !=   S_OK)  
{  
printf( "StringCbCat   Failed:   %s\n ",   MyString);  
return;
}  
printf( "%s\n ",   MyString);

------解决方案--------------------------------------------------------
TCHAR MyString[128];
HRESULT Res;

int i = sizeof(MyString);
Res=StringCbCopy( MyString, sizeof(MyString), _T( "aaa ") );
if (Res != S_OK)
{
printf( "StringCbCopy Failed: %s\n ", MyString);
return 1;
}

Res=StringCbCat( MyString,sizeof(MyString), _T( "bbb ") );
if (Res != S_OK)
{
printf( "StringCbCat Failed: %s\n ", MyString);
return 1;
}
printf( "%s\n ", MyString);

return 0;
------解决方案--------------------------------------------------------
MyString定义成STRSAFE_LPWSTR MyString;
然后
Res=StringCbCopy(MyString, sizeof(MyString), (STRSAFE_LPWSTR) "aaa ");
if (Res != S_OK)
{
printf( "StringCbCopy Failed: %s\n ", MyString);
return;
}

Res=StringCbCat(MyString,sizeof(MyString), (STRSAFE_LPWSTR) "bbb ");
if (Res != S_OK)
{
printf( "StringCbCat Failed: %s\n ", MyString);
return;
}
printf( "%s\n ", MyString);
  相关解决方案