-1

C++のバリアントから文字配列にコピーする方法。これまでのところ、以下のスニペットを思いつくことができました。しかし、それを機能させるには助けが必要です。

_variant_t vt_Data(parent->CharData);

if(vt_Data.vt != VT_NULL)
{
   long ubound;
   long lbound;
   long length;
   TSTHR(SafeArrayGetLBound(vt_Data.parray, 1, &lbound));
   TSTHR(SafeArrayGetUBound(vt_Data.parray, 1, &ubound));
   if(length = ubound - lbound +1)
   {
      char *char_data = new char[length];

      TSTHR(SafeArrayAccessData(vt_Data.parray, (void **) &char_data))
      memcpy(char_data, vt_Data.parray, length);
      TSTHR(SafeArrayUnaccessData(vt_Data.parray));
   }
}
4

1 に答える 1

0

のタイプparent->CharDataがchar*、bstr、またはTCHAR *(または同様のもの)の場合、以下が機能するはずです。(テストされていませんが)

//uses the bstr_t const assignment operator to extract the string
_bstr_t bstr = vt_Data; 

これにより、文字列の新しいコピーが作成されます。

于 2012-06-27T23:36:44.343 に答える