如何在 C++ 中将 LPOLESTR 转换为 char*

Posted

技术标签:

【中文标题】如何在 C++ 中将 LPOLESTR 转换为 char*【英文标题】:How to convert LPOLESTR to char* in C++ 【发布时间】:2014-09-01 05:19:40 【问题描述】:

当我尝试使用 CDynamicStringAccessor 从存储过程中检索“列名”然后写入 csv 文件的第一行时,我必须处理从 LPOLESTR 到 char* 的转换或 std::string。

经过一番研究,我终于找到了最简单的方法。我会尽快发布答案,希望这对有同样问题的人有所帮助。

【问题讨论】:

OLECHARwchar_t 相同(除非您使用的是Windows 95),因此您也可以参考任何答案来转换LPWSTR 【参考方案1】:

您可以使用ATL conversion macros。这些临时从堆栈中分配:

USES_CONVERSION;

std::string my_string = OLE2CA(the_lpolestr);

另请参阅答案 here 以获得一些替代方案,因为自 1995 年左右以来,OLECHAR 就是 wchar_t

一个重要的替代方法是在不转换的情况下实际使用宽字符串(转换要么会丢失信息,要么会产生一个 UTF-8 字符串,它可能适合也可能不适合您的用途) .

【讨论】:

是的,我就是这么做的。感谢您的帖子。【参考方案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);
//....................

【讨论】:

这个代码剂量,man:USES_CONVERSION; LPCSTR szText = OLE2CA(列名);

以上是关于如何在 C++ 中将 LPOLESTR 转换为 char*的主要内容,如果未能解决你的问题,请参考以下文章

在 C 和 C++ 中将 char 转换为 int

如何在 C++ 中将字符串转换为字符? [复制]

在 C++ 中将字符串转换为 Cstring

如何在 C++ CLR 中将数组<System::Byte> 转换为 char*?

如何在c ++中将int数组转换为字节数组[重复]

在 C / C++ 中将 int* 转换为 int(*)[n]