c++ - 我应该使用哪个 *_cast 将任意整数类型的指针转​​换为 char 指针?

标签 c++ pointers casting

我需要用来自 /dev/urandom 的数据填充一个整数类型变量(任意大小)。考虑到这一点,我有以下代码:

std::fstream fstr("/dev/urandom", std::fstream::in | std::fstream::binary);
fstr.read(reinterpret_cast<char*>(&randomseed), sizeof(randomseed));
fstr.close();

(randomseed 是我需要用随机数据填充的变量)。

这会做正确的事情吗(即无论库实现如何,它都是安全的),还是我应该使用其他一些 *_cast?

最佳答案

这不安全。只有 char类型保证没有陷阱表示。

“正确”的解决方案是包装 /dev/urandom在 C++ 中 <random>引擎,并使用 std::uniform_int_distribution .

关于c++ - 我应该使用哪个 *_cast 将任意整数类型的指针转​​换为 char 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315503/

相关文章:

c - 输出不匹配

c++ - 超出堆栈顶部的不可寻址访问

c++ - 使用 inrange (OpenCV) 对 RGB 图像进行阈值处理

c++ - header 包含的概览

java - 如何正确使用Class.cast()?

c# - 将实例转换为通用父级时出错

PostgreSQL-错误 : column "date" cannot be cast to type date

c++ - 指针地址交换总是 C++ 中的原子操作吗?

c - 内存地址和内容

c - 该程序中的内存是如何分配的?