我正在编写一个需要检查和操作Windows路径的跨平台应用程序。
具体来说,对于我现在遇到的特殊问题,我需要知道路径是绝对路径还是相对路径。
当前代码使用boost::filesystem::path
,这当然就像Windows上的魅力一样:
boost::filesystem::path the_path(the_path_as_a_string);
if (!the_path.has_root_path()) { /* do stuff */ }
这种方法的问题是boost::filesystem::path
只有两种模式:本机和便携式。这意味着当我在Linux下编译时,Windows路径语法不可用(它在源代码中#ifdef
。因此,路径“C:\ path”在Windows中被认为是绝对的,但在Linux中则是相对的。
你们可以推荐一个可以检查和操作Windows路径的跨平台C ++库吗?
目前,我要做的唯一Windows路径操作是检查路径是否绝对。
我将用于绝对路径的标准是它包含驱动器号,路径以\
开头。此标准下的绝对路径示例为C:\path
。这些都是此标准下相对路径的示例:C:path
,\path
。
答案 0 :(得分:1)
QT与QFileInfo怎么样?
答案 1 :(得分:1)
似乎很难为此找到一个库。 Winelib中有一种可能性是PathIsRelative
,但我不想使用Winelib。
我最终做了一个非常具体的解决方案,仅仅是为了决定这件小事。假设路径是正确的(在我的情况下是公平的假设),绝对路径将包含:\
,而相对路径则不包含。{/ p>
所以,糟糕但有效的解决方案是:没有合适的库。检查是否存在:\
。
答案 2 :(得分:0)
您能详细说明该程序对Linux上的Windows路径的意义吗?
也许将一些简单的转换应用到Windows路径字符串,从语法上将其转换为Unix路径,然后使用boost :: filesystem来操作它就足够了。