gpt4 book ai didi

c++ - fwprintf 正在打印垃圾

转载 作者:搜寻专家 更新时间:2023-10-30 23:58:07 25 4
gpt4 key购买 nike

我有一个程序可以获取目录列表(由用户选择)并写入该目录中关联的目录和文件列表。但是,当打印到文件时,它总是打印出一个“?”然后是一个随机字符。我正在研究 winapi,visual c++ 2010 express。我也在使用 unicode(所以我使用的是宽字符)。我猜我的问题出在我正在使用的 fwprintf 函数中,因为它将目录/文件添加到我正确拥有的 std::list 中。这是我当前的功能:

// global list for testing
std::list<std::wstring> lDirectories;

void CleanupContents( const wchar_t *sDir )
{
ListDirectoryContents( sDir ) // function that adds each file and directory to the std::list

wchar_t dir[ MAX_PATH * 10 ];
wsprintf( dir, L"%s\\ListOfFilesAndDirectories.txt", sDir );

FILE* pFile;
errno_t err = _wfopen_s( &pFile, dir, L"w" );

while( !lDirectories.empty() )
{
fwprintf( pFile, L"%s", lDirectories.front() );
lDirectories.pop_front();
}

err = fclose( pFile );
}

最佳答案

问题出在这一行:

fwprintf( pFile, L"%s", lDirectories.front() );

fwprintf 需要一个 wchar_t* 而您提供一个 wstring

更改为:

fwprintf( pFile, L"%s", lDirectories.front().c_str() );

关于c++ - fwprintf 正在打印垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21843305/

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