如何从龙龙转换为_variant_t类

How can I convert from LONGLONG to class _variant_t?

本文关键字:variant 转换 龙龙      更新时间:2023-10-16

在这个例子中,m_Amount是CString。 stringToNumber 函数成功地将其转换为 LONGLONG 数。但是当我想将其分配给变体时,出现此错误:

error C2440: 'type cast' : cannot convert from '__int64' to 'class _variant_t'

我的代码

_variant_t  myVar = _variant_t( (LONGLONG)stringToNumber(m_Amount) );

你不需要演员表。

用:

_variant_t(
   __int64 i8Src
)

有关进一步_variant_t参考,请参阅 MSDN

。但是,Windows

CE 不提供常规 Windows XP/Vista/Win 7 安装上可用的所有数据类型。在您的情况下,这意味着 WinCE 不支持 64 位有符号/无符号整数。因此,最好建议您使用较窄的数据类型或滚动自己的类型(可能使用两个int)来获取LONGLONG

您使用什么工具链?

如果_WIN32_WINNT >= 0x501,应该有一个从 __int64_variant_t 的转换,这对应于至少 WinXP 的目标。 对于最新的Windows工具链来说,这应该是正确的,但是您可能需要使用一些较旧的工具(我相信是VS 2005)显式设置宏定义。

试试这个:

union UltimateCast
{
   __int64 From;
   __variant_t To;
};

将需要从中转换的__int64值放入"发件人"字段中。之后,从"收件人"字段中读取结果值。

我正在使用_variant_t将LONGLONG数据插入SQL服务器数据库。如前所述,该数字在C++中映射到CString。所以我从数据库中检索我的数字数据作为字符串,将其转换为 LONGON,更改然后再次将其转换为字符串并将结果字符串存储到数据库中。

SQL 数字 --(从数据库中检索)-->字符串 -> LONGLONG -> 字符串 --

(插入到数据库中)--> SQL 数字