我知道 reinterpret_cast 可能会这样做,但我认为它没有进行数据转换。我不想循环并一个一个地做它们,想知道是否有一种优雅的方法可以同时进行指针类型和数据类型的转换。谢谢!
问问题
1746 次
1 回答
3
如果,正如我假设的那样,你有一些float*
指向 s 数组中的第一个元素float
并且你想将它们用作int
s 那么我建议几个选项:
如果你不想要
float
,不要得到float
s。只需首先存储一个 s 数组int
。同样,如果您不想要
int
s,则将代码更改为float
始终使用 s。如果您确实想要一个
float
s 数组并且在某个时候想要将它们转换为int
s,请在需要时进行。用于static_cast<int>
以安全的方式对每个元素进行转换。如果您想一次转换整个数组,那么我建议您执行以下操作:
float float_array[N] = /* ... */; std::vector<int> ints(float_array, float_array + N);
或者,如果您真的想坚持使用数组,请使用
std::copy
:float float_array[N] = /* ... */; int int_array[N]; std::copy(float_array, float_array + N, int_array);
然而
std::vector
,以上是更优选的。
于 2012-11-29T20:16:25.743 回答