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

时间:2013-02-08 14:56:23

标签: c visual-studio-2010 directshow

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

 HRESULT BuilGraph(IGraphBuilder *pGraph,LPCOLESTR dstFile)

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

LPCOLESTR somevar =OLESTR(argv[1]) ; 

感谢Roman和Joachim我现在改变了我的代码,现在看起来像这样:        char pathstuff [50];        的sprintf(pathstuff, “C:\用户\发动机\桌面\发动机%s.avi”,argv的[1]);

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

 LPCOLESTR  ???      

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

3 个答案:

答案 0 :(得分:4)

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

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

使用简单C,您将使用Joachim建议的mbstowcs或直接使用API​​ - MultiByteToWideChar

UPD:

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

另外,_bstr_t(在comdef.h中)是一种简单的转换方式。您可以指定任一类型,并可以将其转换为任一类型。