读书人

关于使用StringCbCat的有关问题

发布时间: 2012-01-01 23:10:55 作者: rapoo

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

读书人网 >VC

热点推荐