【发布时间】:2012-01-24 11:22:04
【问题描述】:
如果我需要从 ifstream 中读取 int
int myInt = 0;
fileStream.read(reinterpret_cast<char*>(&myInt), sizeof(int));
是否使用reinterpret_cast<char*> 正确的方法来完成此操作?
【问题讨论】:
-
考虑使用
sizeof myInt以不重复该类型,并且如果您稍后决定将类型更改为例如long可能大小不同。 -
谢谢。使用
sizeof myInt听起来是个好主意 -
我对实际问题有点困惑。是如何从
ifstream读取ints,正如问题本身所表明的那样,还是如何从int转换为char*,正如标题所暗示的那样? -
@hmjd:两者都有。必须将
int*转换为char*,以便将int的对象表示从ifstream直接读取到int。您可以通过执行char tmp[sizeof myInt]; filestream.read(tmp, sizeof myInt); std::memcpy(&myInt, &tmp, sizeof myInt);之类的操作来避免直接阅读,从而避免强制转换。但是仅仅为了将这个问题变成两个问题而编写该代码是毫无意义的;-)