我正在创建 VC ++ 2008 Windows窗体应用程序,需要使用 VC6 项目中的一些类。
当我添加一个包含以下方法的文件时:
bool Property::createPaths(string &sPaths)
{
char *tok = NULL;
char seps[] = "\\";
string str;
if (sPaths.size() > 0)
{
tok = strtok((char*)sPaths.c_str(),seps);
str = tok;
while (tok != NULL)
{
int res = CreateDirectory(str.c_str(),NULL);
tok = strtok(NULL,seps);
if (tok != NULL)
{
str += "\\";
str += tok;
}
}
return true;
}
return false;
}
我收到错误抱怨 CreateDirectory 调用:
* 错误C2664:'CreateDirectory':无法将参数1从'const char '转换为'LPCTSTR'
在线搜索,似乎我需要在我的VC2008项目上进行一些配置来解决这个问题。任何人都可以告诉我在哪里以及如何?
答案 0 :(得分:3)
您正在将const char*
传递给期待TCHAR*
的函数。
TCHAR
被定义为char
或wchar_t
,具体取决于编译设置 - 默认情况下,在VC2008中为wchar_t
。您对std::string
的使用假定TCHAR
为char
,这会导致您看到的错误。
您可以使用两种合理的修复方法:
Configuration Properties/General/Character Set
更改为Use Multi-Byte Character Set
。或者
TCHAR
可能不同的定义 - 您可以通过将std::string
或std::wstring
替换为std::basic_string<TCHAR>
(使用适当的typedef)并在_T
或_TEXT
宏中包装字符串文字。