gpt4 book ai didi

c++ - 将 BSTR 转换为 CString 时出错

转载 作者:行者123 更新时间:2023-11-28 07:03:03 25 4
gpt4 key购买 nike

我使用 Visual C++ 2008 和 ADO 访问数据库并获取如下字段值:

_variant_t vtValue;

AfxVariantInit(&vtValue);

vtValue = m_pRecordset->Fields->GetItem(_variant_t(strFieldName))->GetValue();

If (vtValue.vt == VT_BSTR)
{
strValue = vtValue.bstrVal;
TRACE(_T(“Field value is %s.\r\n”), strValue); // Cause CrtDbgReport: String too long or IO Error
}
else
{
.. other codes…
}

strValue 的 TRACE 语句将导致以下错误:

“CrtDbgReport: String too long or IO Error”

刚查了一下strValue,发现是一个中文字符串,只有6个字符,没什么特别的。为什么会报错?

谢谢

最佳答案

A BSTR是一个由长度前缀、数据字符串和终止符组成的复合数据类型,不能直接赋值给CString,因为CString没有长度前缀。

您可以使用智能点类 _bstr_t 进行转换。

strValue = (TCHAR*)(_bstr_t)vtValue;

关于c++ - 将 BSTR 转换为 CString 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22152388/

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