【发布时间】:2011-11-11 09:03:45
【问题描述】:
这是我的第一个问题:)
我有一堆文件,我打开它如下图所示;
ifstream in ( filename, ios :: binary | ios :: in )
然后,我希望在 unsigned int hold 中保存 2 字节数据;
unsigned int hold;
in . read(static_cast<char *>(&hold), 2);
这对我来说似乎是正确的。但是,当我用
编译它时g++ -ansi -pedantic-errors -Werror - -Wall -o main main.cpp
编译器发出错误
error: invalid static_cast from type ‘unsigned int*’ to type ‘char*’
其实我已经通过将static_cast改成(char*)解决了这个问题,也就是
unsigned int hold;
in . read((char*)(&hold), 2);
我的问题是:
-
static_cast<char*>和(char*)之间有什么区别? - 我不确定使用
(char*)是否更安全。如果你有足够的知识,你能告诉我那个话题吗?
注意:如果您有更好的想法,请帮助我,以便我可以改进我的问题?
【问题讨论】:
-
sizeof(unsigned int)通常大于 2,因此您的hold中会有一些已初始化和一些未初始化的字节,这根本没有用。