2014-09-01 80 views
1

當我嘗試從存儲過程中使用CDynamicStringAccessor檢索'列名'時,然後寫入我的csv文件的第一行,我就到了必須要點處理從LPOLESTR到char *或std :: string的轉換。如何將LPOLESTR轉換爲C++中的char *

經過一番研究,我終於找到了最簡單的方法來做到這一點。我會很快發佈答案,希望這會幫助有同樣問題的人。

+1

''OLECHAR'和'wchar_t'是一樣的(除非你在Windows 95中),所以你也可以參考轉換'LPWSTR'的任何答案。 – 2014-09-01 05:35:02

回答

-2
//................. 

    LPOLESTR columname = rs.GetColumnName(i); 

    //Convert LPOLESTR into LPCSTR <- Which is the const CHAR*.... 
    //Below Code Related to the question 
    USES_CONVERSION; 
    LPCSTR szText = OLE2CA(columname); 

    //Below code NOT related to the question 
    fwrite(szText,sizeof(char),strlenm(szText),pFile); 
//.................... 
+0

此代碼劑量,男士: USES_CONVERSION; LPCSTR szText = OLE2CA(columname); – 2014-09-01 22:31:54

5

您可以使用ATL conversion macros。這些分配從堆棧暫時:

USES_CONVERSION; 

std::string my_string = OLE2CA(the_lpolestr); 

又見答案here了一些替代品,因爲OLECHARwchar_t自1995年左右

一個重要的替代方法是實際使用的寬字符串,是無需轉換它(轉換要麼丟失信息,要麼會產生一個UTF-8字符串,它可能適用於你將要使用的字符串)。

+0

是的,這就是我所做的。感謝這篇文章。 – 2014-09-01 22:37:21