这听起来可能很简单,但是:
WORD wSong = 0;
CArchive ar;
...
ar >> wSong;
m_sPublicTalkInfo.iSongStart = static_cast<int>(wSong);
此刻我读到了WORD
到一个特定的变量并将其转换。
我可以同时读入和投射吗?
请注意,我无法序列化int
。它必须是一个WORD
并投射到int
.
Or
ar >> wSong;
m_sPublicTalkInfo.iSongStart = static_cast<int>(wSong);
我认为没有直接的方法。您可以实现一个辅助函数:
template <typename T, typename U>
T readAndCast (CArchive& ar) {
U x;
ar >> x;
return static_cast<T> (x);
}
m_sPublicTalkInfo.iSongStart = readAndCast<int, WORD>(ar);
使用以下方法可能会更好固定宽度整数类型在你的程序中,即也许int_least16_t
代替int
确保该类型具有正确的尺寸。WORD
is fixed到 16 位,但是int
不是。还,WORD
是无符号的并且int
不是,因此在转换过程中可能会出现溢出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)