我需要使用来自 / 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?
答案 0 :(得分:1)
这不安全。只保证char
类型没有陷阱表示。
“正确”的解决方案是将/dev/urandom
包装在C ++ <random>
引擎中,然后使用std::uniform_int_distribution
。