-1

イムキャスティング

char* something= reinterpret_cast<char*>(&GPBuffer);

そして戻るより:

char temp1 [400];

string buffer = reinterpret_cast<string&>(temp1);

文字列をchar *にキャストするのはばかげているように見えますが、これが必要であり、機能します!!

しかし、「何か」(内部キューをスロー) を別のスレッドに渡し、キャストバックしようとすると、次のメッセージが表示されます。

0x00000000009bb2dd in std::basic_string, std::allocator >::operator= (this=0x48410790, __str=Traceback (最新の呼び出しが最後): ファイル "/usr/share/gdb/python/libstdcxx/v6/printers.py" 、469行目、to_string return self.val['_M_dataplus']['_M_p'].string (encoding, length = len) OverflowError: signed integer is less than maximum ) at /usr/lib/gcc/x86_64-redhat- Linux/4.1.2/../../../../include/c++/4.1.2/bits/basic_string.h:486

誰もこのエラーに精通していますか?

4

2 に答える 2

1

プレーンな char 配列を取り、それを文字列にキャストし、それが機能することを期待しますか? あなたは私が思っていたよりも勇敢です。

とにかく、あなたが得ているエラーは、 std::string を読み取り可能な形式で出力しようとするデバッガーの Python スクリプトから来ています。あなたが持っているのは有効な std::string ではないので、スクリプトのいくつかのチェックがトリガーされ、エラーがスローされます。これは通常の C++ エラーではありません。

于 2013-06-20T18:07:21.753 に答える
0

私はvoid*

void* something = (void*)(&PGBuffer);

string my_fancy_string((char*)something)

それに加えて、生データのバッファを保持するために std::string を使用せず、そのために char 配列を使用するだけですが、それはあなたの選択です。

于 2013-06-20T18:02:16.217 に答える