Это я, или boost + filesystem :: path :: make_preferred не конвертирует «\» в «/»?
Дэвидан @ kempt: ~ / Documents / prog / work! $ ../practice/./path_info c: \ pitou foo / bar \ baa.txt
составной путь:
соиЬ << ————-: «c: pitou / foo / bar \ baa.txt»
make_preferred () ———-: «c: pitou / foo / bar \ baa.txt»
Я скорее надеялся на
C: \ pitou \ Foo \ бар \ baa.txt
на окнах и
/pitou/foo/bar/baa.txt
(или что-то близкое) на POSIX
источник здесь: boost :: файловая система учебник
Причина, по которой это не обрабатывается в Linux, хорошо объясняется здесь:
http://theboostcpplibraries.com/boost.filesystem-paths
Цитата:
Если пример 35.5 выполняется в Linux, возвращаемые значения
разные. Большинство функций-членов возвращают пустую строку, кроме
lative_path () и filename (), которые возвращают «C: \ Windows \ System». это
означает, что строка «C: \ Windows \ System» интерпретируется как файл
имя в Linux, что понятно, учитывая, что это не
переносимое кодирование пути или кодирование, зависящее от платформы,
Linux. Поэтому у Boost.Filesystem нет другого выбора, кроме как интерпретировать его
как имя файла.
Закончилось так:
string f = filename;
# ifdef BOOST_POSIX_API //workaround for user-input files
std::replace(f.begin(), f.end(), '\\', '/');
# endif
Должна быть причина, почему это еще не решено …?