【发布时间】:2013-05-21 07:57:17
【问题描述】:
我是 C++ 新手,阅读一些代码如下:
template<typename T>
std::istream & read(std::istream* stream, T& value){
return stream->read(reinterpret_cast<char*>(&value), sizeof(T));
}
然后调用它:
size_t size;
read(&stream, size);
谁能解释这里使用 reinterpret_cast 的目的是什么以及调用 read 函数后的结果是什么?
更新:
问题是:
如果流包含一个字符串,例如“test”,在调用read之后,值的类型变成char *,它的内容是“test”?
【问题讨论】:
-
Google 是您的朋友。试试
reinterpret_cast c++,看看第二个和第三个结果。 -
该代码 sn-p 似乎是在尝试编写通用序列化例程。如果事实确实如此,那么所显示的方法是相当幼稚和危险的。
-
@In silico 如果流中包含字符串,例如“test”,调用read后,value的类型变成char *,内容为“test”?
-
@KenWhite 第二个和第三个 google 结果可能因用户、地区或日常而不同。
-
@justin:说得好,但这并不能改变基本搜索就能回答这个问题的事实。
标签: c++