関数は、未知のDLLからポインタと長さ(引数を介して)を返します。C++はメモリアドレスでいくつかのバイトを読み込み、文字列として出力する
Result = SpamnEggs(&pBytes, &nBytes)
ポインタは、nBytesの連続バイトである有効なメモリアドレスを指します。 これらのバイトには、テキストの有効なascci値が含まれています。ヌル終了はありません!
私は、出力の前に(複雑なライブラリやバイトを使用しない)一般的なC++コードのように、いくつかのの簡単な事業におけるある種の文字列型を「ovelaying」を任務としています:
cout << sresult
を追加しました: なしこれはトラバースする必要がある大きなバッファであるため、バイトをコピーします。
プロトタイプ:すべて
int SpamnEggs(void* pBytes, void* nBytes);
becomes
int SpamnEggs(char** pBytes, int* nBytes);
感謝します。素晴らしい答えとすべての非常に有効です。あなたは生のメモリをコピーして、文字を自分で終了する文字列を追加することができます
あなたは文字列をコピーすることはできません意味重ねることでは?それとも可能なアプローチですか? –
これらの文字列を処理するための新しいクラスを作成するはずですか?または、単に 'std :: string my_string(static_cast(pointer)、length)'を使用できますか? –
はstd:string yesを使用できます。その考えをテストしましょう... –