【问题标题】:StringCchCat functionStringCchCat 函数
【发布时间】:2013-06-30 09:26:10
【问题描述】:

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

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'

【问题讨论】:

  • 尝试使用ext.c_str() 而不是ext

标签: c++ string string-concatenation


【解决方案1】:

可以,但需要是宽字符串:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多