【问题标题】:c++ _bstr_t instead of use stringc++ _bstr_t 而不是使用字符串
【发布时间】:2013-02-26 05:55:39
【问题描述】:

我有一些代码来读取文件,但它使用 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;
      }
  }

【问题讨论】:

    标签: c++ string com bstr


    【解决方案1】:

    如果您阅读_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();
        }
    }
    

    【讨论】:

    • 如果 sTemp="123",但只有当 sTeml=L"123" 时,才能正常工作。如何添加“L”?
    • @jack.li 您可能必须使用宽字符函数和类。
    • 我是c++新手,不知道如何使用宽字符读取文件或写入文件?
    • 用std::string stackoverflow.com/questions/15080652/…查看我的读写文件
    • @jack.li 也写宽字符串?或者使用窄字符,并在需要时转换为宽字符串。如果您稍等片刻,我将尝试为此提供一些代码。
    猜你喜欢
    • 2013-01-06
    • 2016-06-19
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2015-04-13
    • 1970-01-01
    相关资源
    最近更新 更多