2012-02-10 3 views
3

Подобно тому, как питон имеет удобный os.path.join() функцию, мне было интересно, если там был хороший кросс-платформенный способ сделать это в C.запрессовки пути файловой системы в C

Мой текущий подход заключается в создании некоторых директив препроцессора с чем-то вроде этого

#ifdef defined(linux) 
#define PATH_SEPARATOR "/" 
#else 
#define PATH_SEPARATOR "\\" 
#endif 
+3

fwiw, я уверен, что все современные ОС Windows поддерживают разделители путей «/». – FatalError

+0

Хм, вы могли бы просто использовать '/' для всего, это должно работать для Windows и POSIX (хотя это может и не быть в некоторых других операционных системах, так что это зависит от того, насколько портативен ваш код). –

+2

Кросс-платформенный? C? Bah hahaha XD –

ответ

4

Я уверен, что многие библиотеки кроссплатформенности имеют такую ​​функциональность. Возможно, вы хотите посмотреть на функцию APR apr_filepath_merge.

В C++ можно использовать подталкивание:

#include <boost/filesystem.hpp> 
using namespace boost::filesystem; 

[...]  

path path1("/tmp"); 
path path2("example"); 
path result = path1/path2; 
4

Там нет стандартного способа сделать это. Сделайте это самостоятельно или используйте библиотеку. Например, Apache Portable Runtime предоставляет apr_filepath_merge.