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

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

有帮助吗?

解决方案

除非您使用绝对路径,否则根本不需要翻译 - Windows会自动将正斜杠转换为反斜杠,因此如果您使用具有正斜杠路径分隔符的相对路径,那么您将是金色的。如果可能的话,你应该真的避免使用绝对路径。

其他提示

提升中的文件系统库可能帮助你。

有许多方法,恕我直言,正确的答案是重新设计你的程序,以避免操纵路径。我在这里发布了一个答案: 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。将应用程序限制为仅使用这些路径。记录此限制以及应用程序如何处理用户的路径。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top