我有一个项目使用函数使用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 ???
它没有用,任何想法如何解决这个问题。 提前谢谢。
答案 0 :(得分:4)
LPCOLESTR
是const 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中)是一种简单的转换方式。您可以指定任一类型,并可以将其转换为任一类型。