处理跨平台的文件path

是否存在处理跨平台path的任何C ++ GNU独立类? 我的应用程序build立在Windows和LInux上。 我们的configuration文件引用另一个文件在一个单独的目录中。 我希望能够将其他configuration文件的path读入可在Linux或Windows上运行的类。

哪个类可以提供最小的空间来转换在任一系统上使用的path? 谢谢

Solutions Collecting From Web of "处理跨平台的文件path"

除非你使用绝对路径,否则根本不需要翻译 – Windows会自动将正斜杠转换为反斜杠,所以如果使用相对路径和正斜杠路径分隔符,那么你将是黄金版。 如果可能的话,你应该真的避免绝对路径。

尝试boost :: filesystem

在boost 文件系统库可能会帮助你。

有很多方法,恕我直言,正确的答案是重新设计您的程序,以避免操纵路径。 我在这里发布了一个答案: https : //stackoverflow.com/a/40980510/2345997这是相关的。

方法:

  1. 添加一个命令行选项,允许用户指定有问题的路径,而不是从配置文件中读取。
  2. 添加一个命令行选项,以便用户可以指定一个基本路径。 配置文件中的路径将被解释为位于此基本路径下。
  3. 将你的配置文件分成三份。 一个文件将具有跨平台配置,另一个文件将具有仅Windows配置,并且最终文件将具有仅Linux配置。 然后用户可以为Windows和Linux指定正确的路径。 在Windows上,您的程序将读取跨平台配置文件和仅Windows配置文件。 在Linux上,它将读取跨平台文件和仅Linux配置文件。
  4. 将预处理添加到您的配置文件分析。 这将允许你有一个配置文件,用户可以让你的程序忽略文件中的一些行,这取决于程序运行在哪个操作系统上。 因此,用户将能够指定文件的路径两次。 一次用于Linux,一次用于Windows。
  5. 更改设计,使文件始终位于与可执行文件相同的目录中 – 然后用户只在配置文件中指定文件名,而不是文件路径。
  6. 使用一个简单的功能,将“/”切换到“\”。 然后向用户说明他们必须将路径指定为Linux路径,并将此转换应用于Windows。
  7. 为此创建自己的路径迷你语言并将其记录到用户。 例如:“/” – 指定一个目录分隔符,{root} – 扩展到文件系统的根目录,{cwd} – 扩展到当前目录,{app} – 扩展到应用程序的路径等…然后用户可以在两个平台上指定文件路径,如:{root} /myfiles/bob.txt。
  8. 有些路径可以在两个平台上运行。 例如:../my files / bill.txt等相对路径。 限制您的应用程序只能使用这些路径。 记录此限制以及您的应用程序如何处理用户的路径。