c++ - 在最佳时间从 _variant_t 获取 char*

标签 c++ visual-c++ com ole bstr

这是我想要加速的代码。它从 ADO 记录集中获取值并将其转换为 char*。但这很慢。我可以跳过 _bstr_t 的创建吗?

                _variant_t var = pRs->Fields->GetItem(i)->GetValue();

                if (V_VT(&var) == VT_BSTR)
                {
                    char* p = (const char*) (_bstr_t) var;

最佳答案

BSTR 的前 4 个字节包含长度。您可以遍历并获取每个其他字符(如果是 unicode)或每个字符(如果是多字节)。某种 memcpy 或其他方法也可以。 IIRC,这可能比 W2A 或类型转换 (LPCSTR)(_bstr_t)

更快

关于c++ - 在最佳时间从 _variant_t 获取 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/117755/

相关文章:

c# - 在 C# 中实现 DISPID_VALUE 并从 C++ 中调用它

c++ - C++ 中的递归 header 包含错误

c++ - 使用 boost asio 的 HTTPS POST 请求

c++ - 在 Visual C++ 上使用 msxml6.h 时出错

c++ - 一个简单的 boost.spirit 示例中的 error_invalid_expression 编译错误

c++ - MFC 单文档应用程序用户输入

c++ - OS X 上的 Eclipse CDT 提示 gcc 内置函数 : "Function ' __builtin_bzero' could not be resolved"

c++ - 如何通过另一个程序访问 Windows 服务对象

c# - COM接口(interface)指南

c++ - 我可以在 Qt 应用程序中使用现有的 native Windows COM 接口(interface)吗