我想写k个元素从k * i开始写入文件。所以在for循环中我写如下:
testOut.write((char*) h_test[k*i] ,k*sizeof(float));
我收到此错误“从'float'类型无效转换为'char *'”
类型我该如何纠正?
答案 0 :(得分:3)
如果你想用二进制文件写它们,你可以这样做:
testOut.write( reinterpret_cast<const char*>(h_test + k*i), k*sizeof(float));
h_test + k*i
是float
指针的地址,您可以将其重新解释为const char*
,以便write
可以接受它。请注意,添加到指针会增加指针,并考虑指向的元素大小,并在之后转换指针。
最后,write
接受const char*
,而非char*
。
答案 1 :(得分:1)
我认为write
需要char *
和一个大小。试试这个:
testOut.write((char*)&h_test[k*i], k*sizeof(float));
h_test
可能是float
的数组。你试图像这样取消引用它:
h_test[k*i]
这是float
,而不是float *
。要使其成为指针,请使用&
运算符。