首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

关于使用StringCbCat的有关问题,

2012-01-01 
关于使用StringCbCat的问题,高手请进!代码如下所示。最后MyString的值为什么不是 aaabbb 而是 aaa ,即S

关于使用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);

热点排行