如何在需要 LPCOLESTR 的函数中使用 argv[]

Eng*_*ine 0 c directshow visual-studio-2010

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

 HRESULT BuilGraph(IGraphBuilder *pGraph,LPCOLESTR dstFile)
Run Code Online (Sandbox Code Playgroud)

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

LPCOLESTR somevar =OLESTR(argv[1]) ; 
Run Code Online (Sandbox Code Playgroud)

感谢 Roman 和 Joachim,我对代码做了一些修改,现在看起来像这样: char pathstuff[50]; sprintf(pathstuff,"C:\Users\engine\Desktop\engine%s.avi",argv[1]);

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

 LPCOLESTR  ???      
Run Code Online (Sandbox Code Playgroud)

它不起作用,任何想法如何解决这个问题。提前致谢。

Rom*_* R. 5

LPCOLESTR是 的另一个名称const WCHAR*,所以你需要进行转换(对此有很多问题)。如果您使用 ATL 或 MFC,则可能会像这样简单:

CString sValue(argv[1]);
USES_CONVERSION;
BuilGraph (CT2COLE(sValue), ...);
Run Code Online (Sandbox Code Playgroud)

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

更新:

 wchar_t pathstuff[50]; 
 swprintf(pathstuff, L"C:\\Users\\engine\\Desktop\\engine%hs.avi", argv[1]);
 LPCOLESTR x = pathstuff;
Run Code Online (Sandbox Code Playgroud)