sto usando qualcosa di simile:WIN32_FIND_DATA - Prendi il percorso assoluto
std::string tempDirectory = "./test/*";
WIN32_FIND_DATA directoryHandle;
memset(&directoryHandle, 0, sizeof(WIN32_FIND_DATA));//perhaps redundant???
std::wstring wideString = std::wstring(tempDirectory.begin(), tempDirectory.end());
LPCWSTR directoryPath = wideString.c_str();
//iterate over all files
HANDLE handle = FindFirstFile(directoryPath, &directoryHandle);
while(INVALID_HANDLE_VALUE != handle)
{
//skip non-files
if (!(directoryHandle.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
//convert from WCHAR to std::string
size_t size = wcslen(directoryHandle.cFileName);
char * buffer = new char [2 * size + 2];
wcstombs(buffer, directoryHandle.cFileName, 2 * size + 2);
std::string file(buffer);
delete [] buffer;
std::cout << file;
}
if(FALSE == FindNextFile(handle, &directoryHandle)) break;
}
//close the handle
FindClose(handle);
che stampa i nomi di ogni file nella directory relativa ./test/*
.
C'è un modo per determinare il percorso assoluto di questa directory, proprio come fa realpath()
su Linux senza coinvolgere alcuna libreria di terze parti come BOOST? Mi piacerebbe stampare il percorso assoluto per ogni file.
Stai chiedendo un percorso [UNC] (http://en.wikipedia.org/wiki/Uniform_Naming_Convention#Uniform_Naming_Convention)? –
Non credo che avrò bisogno di una soluzione così generale. Per ora il percorso locale dovrebbe andare bene (come in C: \ bla \ blabla \ etc). –
Non c'è alcuna garanzia che ci sia un percorso locale. –