如何在 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。
经过一番研究,我终于找到了最简单的方法。我会尽快发布答案,希望这对有同样问题的人有所帮助。
【问题讨论】:
OLECHAR
与wchar_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*的主要内容,如果未能解决你的问题,请参考以下文章