2

NULL 文字が埋め込まれた BSTR を構築するにはどうすればよいですか?

4

2 に答える 2

4

最初のパラメーターとして nullをSysAllocStringLen()渡してバッファーを割り当て、その後、任意の方法で本体を埋めます。このようなもの:

BSTR bstr = SysAllocStringLength( 0, desiredLength );
if( bstr == 0 ) {
   //handle error, get out of here
}
for( int i = 0; i < desiredLength; i++ ) {
    if( i % 3 == 0 ) {
       bstr[i] = 0;
    } else {
       bstr[i] = 'A';
    }
}
于 2012-04-04T14:33:41.657 に答える
0

短いコード スニペット

BSTR HasNul = ::SysAllocStringLen(L"Who needs\0 embedded like that?", 30);
std::wcout << L"Last character: " << HasNul[29] << "  " << HasNul << L"\n";

BSTR長さは 30 なので、最後の文字はHasNul[29]、私の例では疑問符です。出力は

Last character: ?  Who needs

純粋な C++ メソッドstd::wcoutは最初の NUL 文字で停止するためです。初心者として、それは本当に必要ですか?

于 2020-03-20T11:54:10.947 に答える