将文件path从Windows转换到Linux,然后再使用boost :: filesystem

是我,还是boost :: filesystem :: path :: make_preferred没有将“\”转换为“/”?

davidan @ kempt:〜/ Documents / prog / work!$ ../practice/./path_info c:\ pitou foo / bar \ baa.txt
组成path:
cout << ————-:“c:pitou / foo / bar \ baa.txt”
make_preferred()———-:“c:pitou / foo / bar \ baa.txt”

我很希望

C:\鼻头\富\酒吧\ baa.txt

在窗户和

/pitou/foo/bar/baa.txt

(或者closures)在POSIX上

源代码在这里: boost :: filesystem教程

Solutions Collecting From Web of "将文件path从Windows转换到Linux,然后再使用boost :: filesystem"

结束这样做:

 string f = filename; # ifdef BOOST_POSIX_API //workaround for user-input files std::replace(f.begin(), f.end(), '\\', '/'); # endif 

为什么这个问题还没有得到解决呢?

在Linux上不处理的原因在这里很好地解释:

http://theboostcpplibraries.com/boost.filesystem-paths

引用:

如果在Linux上执行例35.5,则返回的值不同。 大多数成员函数返回一个空字符串,除了返回“C:\ Windows \ System”的relative_path()和filename()。 这意味着字符串“C:\ Windows \ System”在Linux上被解释为一个文件名,这是可以理解的,因为它既不是路径的可移植编码,也不是Linux上的平台相关编码。 因此,Boost.Filesystem别无选择,只能将其解释为文件名。