Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用Qt构造FS路径的跨平台方法_C++_Qt_Filesystems_Portability - Fatal编程技术网

C++ 用Qt构造FS路径的跨平台方法

C++ 用Qt构造FS路径的跨平台方法,c++,qt,filesystems,portability,C++,Qt,Filesystems,Portability,可能重复: 短篇故事:Qt4是否有类似Python的os.path.join 长话短说:我需要以正确的方式(TM)向应用程序目录添加一个相对路径,QCoreApplication::applicationDirPath(),以便代码不依赖于文件系统目录分隔符 仅仅加入QString并使用“/”作为分隔符是一个好的解决方案吗?您可以直接使用“/”或使用。但通常使用a来表示(它将“/”转换为平台特定的路径分隔符)。来自Qt 4.6文档 Qt使用“/”作为通用目录分隔符,与在URL中使用“/”作为路

可能重复:

短篇故事:Qt4是否有类似Python的
os.path.join

长话短说:我需要以正确的方式(TM)向应用程序目录添加一个相对路径,
QCoreApplication::applicationDirPath()
,以便代码不依赖于文件系统目录分隔符

仅仅加入QString并使用“/”作为分隔符是一个好的解决方案吗?

您可以直接使用“/”或使用。但通常使用a来表示(它将“/”转换为平台特定的路径分隔符)。

来自Qt 4.6文档

Qt使用“/”作为通用目录分隔符,与在URL中使用“/”作为路径分隔符的方式相同。如果始终使用“/”作为目录分隔符,Qt将转换路径以符合底层操作系统。

所以,我想QDir会对你有所帮助。

在Qt世界中只需使用“/”。
要转换非Qt类和函数等的路径,请使用QDir::TonativeParators(路径)。

+1表示文档。无论如何,
/
是一个非常通用的分隔符。这是POSIX、Mac OS上的默认设置,Windows(正式)支持。为什么不使用或类似的方法呢?因为我看不到一个QDir方法可以完全满足我的需要。您能更具体地说明一下您的建议吗?运算符重载可能会被滥用,但路径的重载
Operator/
则不会被滥用<代码>QCoreApplication::applicationDirPath()/“MySubDir”是非常合理的代码。可惜Qt4没有。QChar separator()方法将至少提供您需要使用的分隔符