Dokumentacja boost::filesystem::path::lexically_normal()
stanów:boost :: filesystem :: path :: lexically_normal: czy to nieprawidłowe zachowanie?
Zwraca
*this
z nadmiarowym katalogu bieżącego (kropka), katalog nadrzędny (kropka-kropka), a katalog elementów separatora usunięte.
Zobacz: http://www.boost.org/doc/libs/1_63_0/libs/filesystem/doc/reference.html.
następujące wydruki ./test
(przy użyciu Boost, 1.63.0) gdzie spodziewałbym test
:
#include <boost/filesystem/path.hpp>
#include <iostream>
int main(void)
{
std::cout << boost::filesystem::path{"./test"}.lexically_normal().string() << "\n";
return 0;
}
więc pierwszym elementem kropka nie jest uważane za zbędne. Jednak zarówno przy test
jak i ./test
można rozwiązać ten sam plik przy korzystaniu z systemu plików doładowania, więc wydaje mi się to niespójne. Czy to oczekiwane zachowanie?
Zakłada się tu domyślnie, że "test" jest ścieżką względną. To niebezpieczne założenie w przenośnym kodzie. './test' jest jednoznacznie względny. – MSalters
Jest to wrażliwość uniksowa. Gdziekolwiek się kończy, 0777, że root 'perms' nigdy nie będzie dobrze portowany do systemu operacyjnego innego niż Unix. –
@MSalters, nie powszechnie, przychodzi na myśl OpenVMS. –