2014-09-01 3 views
1

Когда я пытался получить «имя столбца» из моей хранимой процедуры с помощью CDynamicStringAccessor, тогда напишите в первую строку моего csv-файла, я до такой степени, что мне нужно касающиеся преобразования из LPOLESTR в char * OR std :: string.Как преобразовать LPOLESTR в char * в C++

После нескольких исследований я наконец нашел самый простой способ сделать это. Я отправлю ответ в ближайшее время, надеюсь, что это поможет людям, у которых есть те же проблемы.

+1

'OLECHAR' - это то же самое, что' wchar_t' (если вы не находитесь в Windows 95), поэтому вы также можете обратиться к любому из ответов на преобразование 'LPWSTR'. –

ответ

-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); –

5

Вы можете использовать ATL conversion macros. Они выделяют из стека временно:

USES_CONVERSION; 

std::string my_string = OLE2CA(the_lpolestr); 

См также ответы here для некоторых альтернатив, поскольку OLECHAR является wchar_t примерно с 1995

Важной альтернативой является фактически использовать широкую строку как есть, без преобразования он (конвертирует либо теряет информацию, либо создает строку UTF-8, которая может быть или не соответствовать тому, что вы собираетесь использовать для нее).

+0

Да, это то, что я сделал. Спасибо за сообщение. –

Смежные вопросы