gpt4 book ai didi

casting - 从 CArchive 读取 WORD 变量并同时转换为 int

转载 作者:行者123 更新时间:2023-12-02 16:36:36 26 4
gpt4 key购买 nike

这听起来可能很简单,但是:

WORD wSong = 0;
CArchive ar;
...
ar >> wSong;
m_sPublicTalkInfo.iSongStart = static_cast<int>(wSong);

此刻,我将 WORD 读入特定变量并将其转换。

我可以一边读入一边转换吗?

请注意,我无法序列化 int。它必须是 WORD 并转换为 int。或者

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);

使用 fixed-width integer types 可能会更好在您的程序中,即可能使用 int_least16_t 而不是 int 以确保类型具有正确的大小。 WORDfixed到 16 位,但 int 不是。此外,WORD 是无符号的,而 int 则不是,因此在转换过程中可能会出现溢出。

关于casting - 从 CArchive 读取 WORD 变量并同时转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com