Изменить текущий рабочий каталог в C ++

Как я могу изменить свой текущий рабочий каталог в C ++ независимо от платформы?

Я нашел заголовочный файл direct.h , который совместим с Windows, и файл unistd.h , который совместим с UNIX / POSIX.

42
задан Palec 18 November 2016 в 16:19
поделиться

4 ответа

Функция chdir работает как в POSIX ( справочная страница ), так и в Windows (там называется _chdir , но существует псевдоним chdir ).

Обе реализации возвращают ноль в случае успеха и -1 в случае ошибки. Как вы можете видеть на странице руководства, в варианте POSIX возможны более отличительные значения errno, но это не должно иметь большого значения для большинства случаев использования.

47
ответ дан 26 November 2019 в 23:33
поделиться

Делает ли chdir () то, что вы хотите? Он работает как под POSIX, так и под Windows.

8
ответ дан 26 November 2019 в 23:33
поделиться

Вы хотите chdir (2) . Если вы пытаетесь заставить свою программу изменить рабочий каталог вашей оболочки - вы не сможете. Есть много ответов о том, что SO уже решает эту проблему.

5
ответ дан 26 November 2019 в 23:33
поделиться

Вы имели в виду C или C++? Это совершенно разные языки.

В Си стандарт, определяющий язык, не распространяется на каталоги. Многие платформы, поддерживающие каталоги, имеют функцию chdir, которая принимает аргумент char* или const char*, но даже там, где она существует, заголовок, в котором она объявлена, не является стандартным. Также могут быть тонкости в том, что означает аргумент (например, в Windows есть каталоги на каждый диск).

В C++ гугление приводит к chdir и _chdir, и предполагает, что Boost не имеет интерфейса для chdir. Но я не буду комментировать дальше, так как не знаю C++.

5
ответ дан 26 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: