我正在使用 ATL 转换宏 A2T 在 std::string 和 const TCHAR* 之间进行转换。然后,我将 TCHAR* 提供给用于解析文件的附加函数。当我执行以下操作时,它会起作用:
USES_CONVERSION;
const TCHAR* fileName = A2T(file.c_str());
foo(filename);
但是,我尝试重构空检查,并使用新函数进行转换:
const TCHAR* StringToTChar(const string s)
{
/* To be added in
if(s.empty())
{
return NULL;
}
*/
USES_CONVERSION;
const TCHAR *ts= A2T(s.c_str());//Using ATL, convert to TCHAR*
// assert(ts!=NULL); to be added
return ts;
}
现在函数 foo(filename) 说它无法打开我给它的文件。我只能假设这是因为文件名变量的格式不正确。这段代码有什么问题吗?
谢谢,
埃里克
编辑:看起来输入字符串是“C:\abc\build\Dvv\ggg.trc”,而 foo 接收的字符串是“C:\abc\buivv\ggg”