【问题标题】:C++ how to convert a char[] array to _bstr_t?C++ 如何将 char[] 数组转换为 _bstr_t?
【发布时间】:2016-06-27 13:36:51
【问题描述】:

我想转换 char array,例如char myArray[size]_bstr_t 字符串。我试过了,但它不起作用:

_bstr_t test;

for (int i = 0; i < myArrayLength; i++) {
    test = test + (_bstr_t) myArray[i];
}

【问题讨论】:

  • 投票重新开放,因为假定的重复标记为c。由于_bstr_t 是一个 C++ 类,因此该答案不适用(即使它的某些部分可以重复使用/重新加工以匹配)。
  • @IInspectable 我不同意。有this 答案显示了如何在 C++ 中回答这个问题。
  • @NathanOliver:这不是 SO 正在寻找的模型:关闭一个问题作为另一个问题的副本(要求使用不同的编程语言),然后筛选答案以找到不符合要求的问题'不解决所提出的问题,因为它也使用与问题不匹配的编程语言。相反,请重新打开此问题,并在此处获得答案,以解决所提出的问题。
  • @IInspectable 告诉用户在 Objective-C 问题上编写 Swift 答案。

标签: c++ bstr-t


【解决方案1】:

_bstr_t 类提供了一个接受 const char* 的转换 c'tor (_bstr_t::_bstr_t)。它执行从 ANSI 代码页编码(使用线程的当前语言环境)到 UTF-16 的字符转换,并构造一个 _bstr_t 对象:

 _bstr_t bstr = _bstr_t(myArray);

请注意,还有一个二进制 _bstr_t::operator+(),它以 const char* 作为其左侧。以下情况也是允许的:

_bstr_t test;
...
_bstr_t bstr = myArray + test;


如果您的输入 char 数组使用当前代码页使用 ASCII 或 ANSI 以外的编码,则必须使用 MultiByteToWideChar 手动将源编码转换为 UTF-16,并从 @ 构造一个 _bstr_t 987654332@ 数组。

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 2023-04-01
    • 2011-06-08
    • 2022-01-22
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多