在 LPCSTR 中附加 BSTR

2023-12-31

我有一个正在接收 BSTR 的类函数。在我的类中,我有一个成员变量 LPCSTR。现在我需要在 LPCSTR 中附加 BSTR。我怎样才能做到这一点。 这是我的功能。

void MyClass::MyFunction(BSTR text)
{
    LPCSTR name = "Name: ";
    m_classMember = name + text; // m_classMember is LPCSTR.
}

在我的 m_classMember 中,我希望此函数值之后应该是“名称:text_received_in_function”。我怎样才能做到这一点。


使用微软特定的_bstr_t http://msdn.microsoft.com/en-us/library/zthfhkd6%28v=vs.71%29.aspx类,它本身处理 ANSI/Unicode。就像是

#include <comutils.h>
// ...

void MyClass::MyFunction(BSTR text)
{
    _bstr_t name = "Name: " + _bstr_t(text, true);
    m_classMember = (LPCSTR)name;
}

就是你几乎想要的。然而,正如评论所指出的,你必须管理m_classMember和连接的字符串。在上面的例子中,代码很可能会崩溃。

如果您拥有MyClass对象,您可以简单地添加另一个成员变量:

class MyClass {
private:
  _bstr_t m_concatened;
//...
};

然后使用m_classMember作为指向字符串内容的指针m_concatened.

void MyClass::MyFunction(BSTR text)
{
    m_concatened = "Name: " + _bstr_t(text, true);
    m_classMember = (LPCSTR)m_concatened;
}

否则,在分配之前m_classMember,您应该以与分配它相同的方式释放它(free, delete []等),并创建一个新的char*数组,您可以在其中复制连接字符串的内容。就像是

void MyClass::MyFunction(BSTR text)
{
    _bstr_t name = "Name: " + _bstr_t(text, true);

    // in case it was previously allocated with 'new'
    // should be initialized to 0 in the constructor
    delete [] m_classMember; 
    m_classMember = new char[name.length() + 1];

    strcpy_s(m_classMember, name.length(), (LPCSTR)name);
    m_classMember[name.length()] = 0;
}

应该做这项工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 LPCSTR 中附加 BSTR 的相关文章

随机推荐

  • 如何在Java中格式化时间间隔?

    我创建 J2SE 应用程序 该应用程序需要将两次以毫秒为单位的时间格式化为表示这两次时间之间间隔的字符串 long time1 1334331041677L Fri Apr 13 17 30 41 CEST 2012 long time2
  • 异步函数调用C++0x

    我正在使用以下代码测试 std async 函数http www justsoftwaresolutions co uk threading multithreading in c 0x part 8 futures and promise
  • WIndows API 中的“L”和“LPCWSTR”

    我发现 NetUserChangePassword 0 0 L ab L cd 将用户密码从 ab 更改为 cd 然而 NetUserChangePassword 0 0 LPCWSTR ab LPCWSTR cd 不起作用 返回值表示密码
  • 什么是“ANSI_X3.4-1968”编码?

    在我的系统上查看以下输出 STEP 101 python3 c import sys print sys stdout encoding ANSI X3 4 1968 STEP 102 STEP 103 locale LANG C LANG
  • 杰克编译花了很长时间

    升级我的项目以启用 Jack 和 Java8 功能后 我的 16GB MacBook 似乎无法再构建我的项目 我看到内存使用量越来越高 但进程总是卡在同一点 我的 Gradle 控制台 Executing tasks app assembl
  • 从 CDI Proxy 获取真实对象

    我寻找一种干净的 CDI 解决方案 而不是依赖于 WELD 的解决方案 但到目前为止一无所获 我需要测试我获得的对象列表中的每个元素是否 Inject Any MyInterfacebeans 是一个代理 当true我需要获取真实的对象进行
  • 在 Linux 中读取 USB 网络摄像头的输出

    我正在用 C 语言尝试一些 fread 和 fwrite 所以我用 C 语言编写了这个小程序 从网络摄像头获取数据并将其转储到文件中 以下为来源 include
  • 重新创建 Apple Watch 健身追踪器“进度”栏 - CAShapeLayer 笔划上的渐变

    我正在编写一个应用程序 可以充分利用 Apple Watch 的健身追踪器设计 如下 到目前为止 我已经创建了基本轮廓 它只是一个带有椭圆 CGPath 的 CAShapeLayer 我使用中风开始和中风结束来动画进度 我的问题出现在对轮廓
  • 如何处理锁(JPA)?

    根据Java 持久 锁定 wiki 书籍 http en wikibooks org wiki Java Persistence Locking Common Locking Mistakes 2C Questions and Proble
  • 如何在jetpack compose中设计多圆形进度条?

    我正在尝试使用 jetpack compose 设计一个显示多个进度的进度条 但我没有找到任何库或帮助材料 我只能设计一个进度条 但我需要设计像 只需使用多个CircularProgressIndicator里面一个Box Box cont
  • 有没有办法提高 Xcode 的代码完成能力?

    由于某种原因 不确定从什么时候开始 并不总是这样 但是 当我想写下NS词典 up to NSDi它在暗示我NSDirectoryEnumerationSkipsSubdirectory后代 在设计算法时 苹果的工程师肯定会使用一些 NSDi
  • 计算R中多个矩阵的平均值

    计算相同维度的多个矩阵的平均值的有效方法是什么 如果 A B 是 2 x 2 矩阵 那么 A 2 3 4 5 B 6 7 8 9 平均值 A B 应该给出 4 5 6 7 简单的方法是做 A B num 矩阵 并显式处理 NA 值 还有其他
  • 在 xml 文件中实例化内部类(Preference)

    当您想在某些情况下访问自定义视图时layout xml文件 您有两个选择 该视图属于它自己的类 然后你就做
  • 如何在Javascript中检测Safari 10浏览器?

    我正在使用 var isSafari constructor i test window HTMLElement 但它不适用于新的 Safari 10 关于使用什么有什么建议吗 Thanks edit 如何检测Safari Chrome I
  • 如何通过引用传递子字符串?

    我递归地调用一个函数 传递一个子字符串作为参数 该子字符串始终从当前字符串的开头开始直到一个位置 如果我使用 C 我可以将指针传递到字符串的第一个位置 然后传递必要的长度 尽管如此 我想使用该类获得相同的结果string 是否可以 如果我使
  • 如何检查 iTunes 上是否有新版本?

    我需要在 iTunes 上检查我的 iOS 应用程序版本 如果有新版本可用 我想显示 UIAlert 我不想在我的服务器上存储版本号 因为随时都有更新的版本可用 是否可以在 iTunes 上查看我的应用程序版本 对的 这是可能的 看看这个非
  • 斯坦福 NLP 分类器示例

    我正在尝试学习斯坦福 NLP 分类器 并希望研究文档分类问题 谁能推荐一个可以找到工作示例的地方 我还查看了 Open NLP 库 并找到了许多工作示例 例如 http tharindu rusira blogspot com 2013 1
  • data.table R 中的滞后列表[重复]

    这个问题在这里已经有答案了 shift in R s data table非常适合时间序列和时间窗口的东西 但列表的列不会像其他元素的列那样滞后 在下面的代码中 gearLag领先 滞后gear正确 但是gearsListLag不落后gea
  • 为什么C变量存储在特定的内存位置?

    昨天我参加了一次面试 面试官问我存储变量的存储类 我的回答战 Local Variables are stored in Stack Register variables are stored in Register Global stat
  • 在 LPCSTR 中附加 BSTR

    我有一个正在接收 BSTR 的类函数 在我的类中 我有一个成员变量 LPCSTR 现在我需要在 LPCSTR 中附加 BSTR 我怎样才能做到这一点 这是我的功能 void MyClass MyFunction BSTR text LPCS