0

是否可以使用字符串变量代替TEXT("\\*.txt")c++ 中的以下函数?

StringCchCat (szDir, MAX_PATH, TEXT("\\*.txt"));

例子:

string ext = "\\*.pdf";
StringCchCat (szDir, MAX_PATH, ext);

使用 VS C++ 返回编译中的错误:

error C2664: 'StringCchCatW': can not convert parameter 3 from 'std :: string' to 'STRSAFE_LPCWSTR'
4

2 回答 2

0

您的变量ext不是宽字符。实际上,正如@billz 指出的那样,它是 String 类型。查看StringCchCat 函数的文档,微软似乎提供了此函数的 3 种重载形式 - 一种用于标准字符,一种用于“TCHAR”,另一种用于宽字符。无论哪种方式,String 都不会自动转换为 char 类型,这就是您应该使用 c_str() 函数的原因。

于 2013-06-30T09:30:51.793 回答
0

是的,但它需要是一个宽字符串:

std::wstring ext = L"\\*.pdf";
StringCchCat(szDir, MAX_PATH, ext.c_str());

除非你在没有UNICODE定义的情况下编译,在这种情况下你做错了。

于 2013-06-30T10:13:51.703 回答