首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringCchCat函数

StringCchCat函数
EN

Stack Overflow用户
提问于 2013-06-30 17:26:10
回答 2查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
StringCchCat (szDir, MAX_PATH, TEXT("\\*.txt"));

示例:

代码语言:javascript
复制
string ext = "\\*.pdf";
StringCchCat (szDir, MAX_PATH, ext);

使用VS时,C++会在编译时返回错误:

代码语言:javascript
复制
error C2664: 'StringCchCatW': can not convert parameter 3 from 'std :: string' to 'STRSAFE_LPCWSTR'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-30 18:13:52

可以,但必须是一个宽字符串:

代码语言:javascript
复制
std::wstring ext = L"\\*.pdf";
StringCchCat(szDir, MAX_PATH, ext.c_str());

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

票数 0
EN

Stack Overflow用户

发布于 2013-06-30 17:30:52

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17388947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档