我有一个程序可以获取目录列表(由用户选择)并写入该目录中关联的目录和文件列表。但是,当打印到文件时,它总是打印出'?'然后是一个随机字符。我正在研究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 );
}
答案 0 :(得分:7)
问题出在这一行:
fwprintf( pFile, L"%s", lDirectories.front() );
fwprintf
需要wchar_t*
,并且您提供wstring
。
更改为:
fwprintf( pFile, L"%s", lDirectories.front().c_str() );