Вы можете рассмотреть возможность использования прямой косой черты даже в Windows в качестве разделителя каталогов.Большинство библиотек Windows способны конвертировать их в обратные слэши (они на самом деле не выполняют конвертацию, но понимают их как требуется; остальное - деталь реализации)
В противном случае обратите внимание, что C ++ 11 (или C ++ 14) стандарт не знает о «папках» (вы на самом деле имеете в виду каталоги ; поскольку папки являются только артефактом графического интерфейса; прочитайте, например, n3337 , чтобы проверить).C ++ 17 имеет std :: filesystem .
Возможно, вам следует рассмотреть некоторые другие библиотеки или фреймворки: Boost , POCO , Qt все знают, как обращаться с каталогами в распространенных ОС (Windows, Linux, MacOSX, Android).
Более серьезное беспокойство вызывает буква "диск".Для Windows (и даже для некоторых MS-DOS) C:/FOO/BAR.TXT
(или, используя обратную косую черту, C:\FOO\BAR.TXT
) и D:/FOO/BAR.TXT
относятся к разным файлам.В Linux или MacOSX нет реального эквивалента.Так как точки монтирования являются более общими.
Наконец, соглашения об файловой иерархии (и файловых системах) широко варьируются от одной ОС к другой.Для Linux см. hier (7) и path_resolution (7) .Обратите внимание, что globbing также зависит от ОС (и происходит иначе: в системах Unix это часто выполняется shell ; в Windows это может быть сделано в каждом приложении некоторыми crt0 как в системе ).Для Linux см. Также glob (7) .
Кстати, возможно, вы могли бы рассмотреть возможность использования WSL на вашем компьютере с Windows.В удачных случаях один и тот же исполняемый файл может работать в Linux и Windows (под WSL), и это облегчает вашу работу (когда ее можно использовать).
Найдите время, чтобы узнать больше о операционные системы и файловые системы .Я рекомендую Операционная система: Three Easy Pieces учебник (можно бесплатно загрузить).
Вы можете найти полезную информацию о вашей ОС.Для Linux прочитайте ALP (или более новую книгу), затем syscalls (2) и intro (3) и т. Д. ... Для Windows изучите WinAPI (я не знаю), возможно, запустив здесь .
В Linux API, относящийся к каталогам, включает mkdir (2) , chdir (2) , rmdir (2) , getcwd (2) , stat (2) , opendir (3) и closedir
, readdir (3) , nftw (3) , и т. Д. И т. Д. .... Имейте в виду, что файл в Linux является просто i-node (читать inode (7) и около жестких ссылок ) и может находиться в нескольких каталогах (или ни одного), см. ссылка (2) .AFAIU, это делает огромную разницу с Windows.
PS.Я никогда не использовал Windows и никогда не кодировал ее.