0

我知道 reinterpret_cast 可能会这样做,但我认为它没有进行数据转换。我不想循环并一个一个地做它们,想知道是否有一种优雅的方法可以同时进行指针类型和数据类型的转换。谢谢!

4

1 回答 1

3

如果,正如我假设的那样,你有一些float*指向 s 数组中的第一个元素float并且你想将它们用作ints 那么我建议几个选项:

  1. 如果你不想要float,不要得到floats。只需首先存储一个 s 数组int

  2. 同样,如果您不想要ints,则将代码更改为float始终使用 s。

  3. 如果您确实想要一个floats 数组并且在某个时候想要将它们转换为ints,请在需要时进行。用于static_cast<int>以安全的方式对每个元素进行转换。

  4. 如果您想一次转换整个数组,那么我建议您执行以下操作:

    float float_array[N] = /* ... */;
    std::vector<int> ints(float_array, float_array + N);
    
  5. 或者,如果您真的想坚持使用数组,请使用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 回答