Я использую следующий код
#include "stdafx.h"
#include <iostream>
#include "stdafx.h"
#include <windows.h>
#include <string>
#include <commdlg.h>
#include <Shlwapi.h>
#pragma comment (lib, "Shlwapi.lib")
// This function is an abomination -- I just wrote it to be quick.
std::wstring CombinePaths(std::wstring const &pattern, LPCWSTR filename) {
std::wstring tmp(pattern);
tmp.push_back('\0');
PathRemoveFileSpec(&tmp[0]);
std::wstring retVal(MAX_PATH, '\0');
PathCombine(&retVal[0], tmp.c_str(), filename);
return retVal.c_str();
}
void FindFiles(std::wstring const &pattern) {
WIN32_FIND_DATA fd;
HANDLE h = FindFirstFile(pattern.c_str(), &fd);
if (h == INVALID_HANDLE_VALUE) {
wprintf(L"FindFirstFile. Err=%d\n", GetLastError());
return;
}
do {
std::wstring fullPath = CombinePaths(pattern, fd.cFileName);
wprintf(L"FullPath=%s\n", fullPath.c_str());
} while (FindNextFile(h, &fd));
FindClose(h);
}
int main()
{
FindFiles(L"c:\\Windows"); //Passes
FindFiles(L"c:\\"); //Fails
std::cin.get();
return 0;
}
Почему он не передает C:\\
?Есть предложения?