gpt4 book ai didi

c++ - 使用TRACE输出文件名时出错

转载 作者:行者123 更新时间:2023-11-28 08:25:26 26 4
gpt4 key购买 nike

我正在尝试使用 TRACE 宏将文件名发送到输出窗口。以下编译,但当它执行时,我在输出窗口中得到一个错误,而不是所需的输出:

TRACE(_T("Trace test.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ERROR_SUCCESS, __FILE__, __LINE__);

产生错误:

_CrtDbgReport: String too long or IO ErrorFirst-chance exception at 0x7c812afb in MyApp.exe: Microsoft C++ exception: long at memory location 0x0012fe18..

我确定它与 __FILE__ 宏有关,但我不确定到底出了什么问题。有谁知道如何让它工作?谢谢。

最佳答案

是不是您需要一个宽字符串版本的 FILE 才能做到这一点?

#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)
#define __WFILE__ WIDEN(__FILE__)
wchar_t *pwsz = __WFILE__;

wprintf(pwsz)

// Function to split path into file and directory parts..
void ExtractFileNameFromPath( const std::wstring &_sPath,std::wstring &_sFilename,std::wstring &_sDirectory)
{
int iPos = _sPath.rfind('\\');
if( iPos == std::_tstring::npos) iPos = _sPath.rfind(TCHAR("/"));
if( iPos != std::_tstring::npos)
{ _sFilename = _sPath.substr(iPos + 1); _sDirectory = _sPath.substr(0,iPos); }
else _sFilename = _sPath;
nsStringTools::Trim(_sFilename);
nsStringTools::Trim(_sDirectory);
if(_sDirectory[_sDirectory.length()-1] != _T('\\'))
_sDirectory += _T("\\");
}

关于c++ - 使用TRACE输出文件名时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com