Как я могу изменить свой текущий рабочий каталог в C ++ независимо от платформы?
Я нашел заголовочный файл direct.h
, который совместим с Windows, и файл unistd.h
, который совместим с UNIX / POSIX.
Функция chdir
работает как в POSIX ( справочная страница ), так и в Windows (там называется _chdir
, но существует псевдоним chdir
).
Обе реализации возвращают ноль в случае успеха и -1 в случае ошибки. Как вы можете видеть на странице руководства, в варианте POSIX возможны более отличительные значения errno, но это не должно иметь большого значения для большинства случаев использования.
Делает ли chdir ()
то, что вы хотите? Он работает как под POSIX, так и под Windows.
Вы хотите chdir (2)
. Если вы пытаетесь заставить свою программу изменить рабочий каталог вашей оболочки - вы не сможете. Есть много ответов о том, что SO уже решает эту проблему.
Вы имели в виду C или C++? Это совершенно разные языки.
В Си стандарт, определяющий язык, не распространяется на каталоги. Многие платформы, поддерживающие каталоги, имеют функцию chdir
, которая принимает аргумент char*
или const char*
, но даже там, где она существует, заголовок, в котором она объявлена, не является стандартным. Также могут быть тонкости в том, что означает аргумент (например, в Windows есть каталоги на каждый диск).
В C++ гугление приводит к chdir
и _chdir
, и предполагает, что Boost не имеет интерфейса для chdir. Но я не буду комментировать дальше, так как не знаю C++.