我知道reinterpret_cast可能会这样做,但我认为它没有进行数据转换。我不想循环并逐个执行它们,并想知道是否有一种优雅的方式来执行指针类型和数据类型转换。 谢谢!
答案 0 :(得分:3)
如果我假设您有一些float*
指向float
数组中的第一个元素,并且您想将它们用作int
s,那么我建议一些选择:
如果您不想float
,请不要float
。只需存储一组int
s。
同样,如果您不想int
,请将代码更改为始终使用float
。
如果您确实希望拥有float
的数组,并且在某些时候想要将它们转换为int
,请在需要时执行此操作。使用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
是首选。