0

Platform::String^ オブジェクトから自分のオブジェクトの 1 つに文字列を転送する関数を書きたいと思います。これを行うには、Platform::String^ オブジェクトから char* を取得する必要があります。ただし、必要なバッファーのサイズを決定する方法が正確にはわかりません。

私はこのようなことをしようとしています:

void PlatStrToCustomStr(Platform::String^ source, CustomStrObject& destination)
{

    int bufferSize = (source->Length()*2)+1; //How do I know how big?
    char* buffer = new char[bufferSize]; 
    size_t* result;
    wcstombs_s(result, buffer, bufferSize, source->Begin(), bufferSize);

    destination.copy(buffer);
    free(buffer);
}

bufferSize の大きさを知る方法はありますか?

他にも同様の質問があることは知っていますが、この特定の質問に対するコードの回答が見つかりませんでした。

4

1 に答える 1

2

への参照を読むwcstombs_sと、2 番目の引数が であることがわかりますNULL。次に、返される結果の文字列に必要なバイト数を取得します。これを機能させるには、3 番目の引数をゼロに設定する必要もあります。


しかし、初期化されていないポインターを最初の引数として渡すという点で、より深刻な問題があります。実際にresultは、通常の (非ポインター) 変数として宣言し、アドレス演算子を使用し&て引数を参照渡しする必要があります。

size_t result = 0;
wcstombs_s(&result, ...);
于 2013-06-05T15:46:08.333 に答える