我有一个程序,输入需要的文件列表,这是保存在std::vector
:删除重复的文件名
std::vector<std::string> fileNames;
用户完全可以自由进入任何文件名(他们采取从argv
),并且如果其进入是指同一文件的程序应该忽略重复项的文件名。 的问题是,用户甚至可以使具有矢量是这样的:
{
"myfile1.txt",
"/path/to/myfile1.txt",
"/path//to/myfile1.txt"
}
考虑我从/path/to
调用程序,这三个文件的名字指的是同一个文件,但它们是不同的字符串。
我必须打开它们fopen()
(不是与std::ifstream
)。
,并检查他们所有的程序fopen()
S中所有文件开始的过程之前,所以它不是一个问题。
是否有删除重复的文件名称的有效途径?
你为什么不给我们一套? –
第一步是将它们归一化为相同的形式:完整路径,更换''//用'/'然后它的一个简单的任务 – vu1p3n0x
[可能有助于](http://www.boost.org/doc/libs /1_48_0/libs/filesystem/v3/doc/reference.html#canonical)。请注意,该路径必须存在才能起作用,并且“if(exists){...}”不够好,因为它在您使用它时可能不存在。 – chris