2012-10-12 32 views
0

我是C++的新手。 我正在嘗試將一個BSTR寫入一個CSV文件,但是當我用wcout打印時的數據與文件中存在的數據不匹配。Visual C++將BSTR寫入文件

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. If tempString = getData();函數返回一個BSTR, 我無法在文件中看到相同的值。

請問有人能澄清一下嗎?也請解釋一下將BSTR寫入文件的方法究竟是什麼?

編輯:添加代碼

+0

這是不正確的。 'KBID'沒有用任何東西初始化。是的,正如在下面的回答中提到的那樣,函數沒有返回。 – Ajay

+0

@Ajay你能否請我驗證我發佈的答案? – TechyHarry

回答

0

我已經添加了以下幾行代碼在我的程序,並給出正確的結果。

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

您沒有返回任何東西!

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

但是,如果你想轉換成一些其他形式和打印,look here

+0

我已經添加了代碼。其實我忘記了退貨聲明。 – TechyHarry

+0

您能否驗證我發佈的答案?如果我使用這些API將BSTR轉換爲CString並寫入文件,是不是會有數據丟失? – TechyHarry

+0

你能否驗證我的答案? – TechyHarry