estoy usando algo como esto:WIN32_FIND_DATA - Obtener la ruta absoluta
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);
que imprime los nombres de cada archivo en el directorio relativo ./test/*
.
¿Hay alguna forma de determinar la ruta absoluta de este directorio, como lo hace realpath()
en Linux sin involucrar ninguna biblioteca de terceros como BOOST? Me gustaría imprimir la ruta absoluta a cada archivo.
¿Está solicitando una ruta [UNC] (http://en.wikipedia.org/wiki/Uniform_Naming_Convention#Uniform_Naming_Convention)? –
No creo que necesite una solución tan general. La ruta local debería funcionar bien por ahora (como en C: \ bla \ blabla \ etc). –
No hay garantía de que haya una ruta local. –