【问题标题】:Visual C++ Write BSTR to FileVisual C++ 将 BSTR 写入文件
【发布时间】:2012-10-12 06:09:23
【问题描述】:

我是 C++ 的新手。 我正在尝试将 BSTR 写入 CSV 文件,但使用 wcout 打印时的数据与文件中存在的数据不匹配。

BSTR tempString;
ofstream outputFile;
outputFile.open("C:\\data.csv",ios::out);
tempString = getData();
outputFile.write(tempString);
outputFile.close();

BSTR getData()
{
   BSTR KBIDValue;
   IStringCollection *KBID;
   KBID->get_Item(0,&KBIDValue);
   return KBIDValue;
}
  1. 如果 tempString = L"TestData" -> 我可以在 文件。
  2. 如果 tempString = getData();其中函数返回一个 BSTR, 我无法在文件中看到相同的值。

有人可以澄清一下吗?另外请解释一下将BSTR写入文件的方法是什么?

编辑:添加代码

【问题讨论】:

  • 不正确。 KBID 没有用任何东西初始化。是的,正如下面的答案所述,函数没有返回。
  • @Ajay 你能验证我发布的答案吗?

标签: string visual-c++ file-io bstr


【解决方案1】:

你没有返回任何东西!!!

BSTR getData()
{
   BSTR KBIDValue;
   IStringCollection *KBID;
   KBID->get_Item(0,&KBIDValue);
   return KBIDValue;
}

但是,如果您想转换为其他形式并打印,look here

【讨论】:

  • 我现在已经添加了代码。其实我忘记了return语句。
  • 您能否验证我发布的答案?如果我使用这些 API 将 BSTR 转换为 CString 并写入文件,会不会有任何数据丢失?
  • 能否验证我的回答?
【解决方案2】:

我在我的程序中添加了以下代码行并正确给出了结果。

ofstream outputFile;
outputFile.open(filePath,ios::out);
outputFile << W2A(CString(tempString));

【讨论】:

  • 什么是 W2A?这不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 2022-01-10
相关资源
最近更新 更多