我有一個程序,輸入需要的文件列表,這是保存在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