c++ _bstr_t 而不是使用字符串

标签 c++ string com bstr

我有一些读取文件的代码,但它使用的是 std::string,我需要使用 _bstr_t 下面的代码可以正常工作。如何改变类型?

   std::ifstream inFile("QdatPassWordconfig.config");
  std::string sPassWord; //(here, i need to use _bstr_t)
  std::string sTemp;
  if (inFile.is_open())
  {
      if(std::getline(inFile,sTemp)) 
      {
            cout<<sTemp<<endl;
            sPassWord=sTemp;
      }
  }

最佳答案

如果您阅读 _bstr_t documentation ,你会看到它的 assignment operator采用普通的 const char *

所以它可能只是分配给它:

_bstr_t sPassword;

// ...

sPassword = sTemp.c_str();

如果您在使用普通的窄字符字符串时遇到问题,您应该将所有与此相关的代码转换为使用宽字符字符串,即带有 w 前缀的类:

std::wifstream inFile("QdatPassWordconfig.config");
_bstr_t sPassword;
std::wstring sTemp;

if (inFile.is_open())
{
    if(std::getline(inFile, sTemp)) 
    {
        std::wcout << sTemp << endl;

        sPassword = sTemp.c_str();
    }
}

关于c++ _bstr_t 而不是使用字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082341/

相关文章:

c++ - 推力按键即时排序还是不同的方法?

javascript - 如何在 Javascript 中将字符串 trim 为 N 个字符?

java - JLabel:重音字母问题

java - 如何在 Java 中要求用户在循环中重新输入某个字符串时只打印一次文本

c# - 为什么 COM Interop 将 VB6 bool 值视为 C# 短整数?

c++ - C++ Windows API MOUSEEVENTF_XDOWN,MOUSEEVENTF_XUP不起作用

c++ - 无法从测试中的项目链接目标文件

c++ - 与 C 直接兼容的语言

c# - 在C#中加载COM对象会引发 “Unable to cast COM object of type ' System .__ ComObject'异常到接口(interface)类型…”,但C++或VB不会

c++ - 在 x86 应用程序中使用 x64 dll