2014-02-18 2 views
2

У меня есть программа, которая получает список директорий (выбранных пользователем) и записывает список каталогов и файлов, связанных в этом каталоге. Однако при печати в файл всегда печатается символ '?' затем после этого случайный символ. Я работаю над winapi, visual C++ 2010 express. Я также использую unicode (поэтому я использую широкие символы). Я предполагаю, что моя проблема связана с функцией fwprintf, которую я использую, потому что она добавляет каталоги/файлы в мой std :: list, который у меня есть правильно. Это моя функция тока:fwprintf распечатывает мусор

// 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); 
} 

ответ

7

Проблема заключается в этой строке:

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

fwprintf ожидает wchar_t* и вы предоставляете wstring.

Изменить на:

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

Ugh. У меня эти простые ошибки. Я застрял часами на этом. >. <Программирование ... иногда меня сводит с ума); – Vince

Смежные вопросы