0

我有一个项目,其中一个函数使用 LPCOLESTR 类型的参数

 HRESULT BuilGraph(IGraphBuilder *pGraph,LPCOLESTR dstFile)

我的问题是如何使用 argv[1] 并将其放入 dstFile,我尝试过:

LPCOLESTR somevar =OLESTR(argv[1]) ; 

多亏了 Roman 和 Joachim,我改变了一点我的代码,现在看起来像这样:char pathstuff[50]; sprintf(pathstuff,"C:\Users\engine\Desktop\engine%s.avi",argv[1]);

所以我得到了路径视频名称,知道 argv[1] 将是一个数字,我该如何将其转换为

 LPCOLESTR  ???      

它没有用,任何想法如何解决这个问题。提前致谢。

4

3 回答 3

4

LPCOLESTR是 的另一个名称const WCHAR*,因此您需要进行转换(关于 SO 的大量问题)。如果您使用的是 ATL 或 MFC,则可能很简单:

CString sValue(argv[1]);
USES_CONVERSION;
BuilGraph (CT2COLE(sValue), ...);

使用纯 C,您将mbstowcs按照 Joachim 的建议使用,或直接使用 API - MultiByteToWideChar

升级版:

 wchar_t pathstuff[50]; 
 swprintf(pathstuff, L"C:\\Users\\engine\\Desktop\\engine%hs.avi", argv[1]);
 LPCOLESTR x = pathstuff;
于 2013-02-08T15:10:03.543 回答
3

问题是这LPCOLESTR是一个宽字符串指针(即指向 的指针wchar_t),而参数数组中的字符串是普通的窄字符串。

您可以使用mbstowcs将普通字符串指针转换为宽字符串指针。

于 2013-02-08T15:03:36.130 回答
0

此外,_bstr_t(在 comdef.h 中)是一种简单的转换方式。您可以分配任何一种类型,也可以将其强制转换为任何一种类型。

G

于 2013-02-08T15:16:27.630 回答