im cast
char* something= reinterpret_cast<char*>(&GPBuffer);
而不是回到:
char temp1 [400];
string buffer = reinterpret_cast<string&>(temp1);
我知道将字符串转换为char *看起来很愚蠢但这就是我需要的东西而且它有效!!
但如果我将“某事”(抛出内部阙)传递给另一个线程,并且我尝试强制转回,我会收到:
0x00000000009bb2dd in std :: basic_string,std :: allocator&gt; :: operator =(this = 0x48410790,__str = Traceback(最近一次调用最后一次): 在to_string中输入文件“/usr/share/gdb/python/libstdcxx/v6/printers.py”,第469行 return self.val ['_ M_dataplus'] ['_ M_p']。string(encoding,length = len) OverflowError:有符号整数小于最小值 )/usr/lib/gcc/x86_64-redhat-linux/4.1.2 /../../../../ include / c ++ / 4.1.2 / bits / basic_string.h:486
是否有人熟悉此错误?
答案 0 :(得分:1)
你接受一个普通的char数组,把它转换为字符串,并期望它能够工作?你比我想象的更勇敢。
无论如何,你得到的错误来自调试器的Python脚本,它试图以可读的形式打印std :: string。因为你拥有的只是一个有效的std :: string,所以有些检查脚本会触发并抛出错误。这不是正常的C ++错误。
答案 1 :(得分:0)
我会使用void*
void* something = (void*)(&PGBuffer);
string my_fancy_string((char*)something)
除此之外,我不会使用std :: string来保存原始数据的缓冲区,只使用char数组,但这是你的选择。