I 입력에 std::vector
에 저장된 파일의 목록을 소요하는 프로그램이 있습니다벡터에서 중복 파일 이름을 제거
std::vector<std::string> fileNames;
이
는 사용자가 어떤 파일 이름을 입력 완전 무료 (그들이 촬영됩니다 argv
에서), 동일한 파일을 참조하는 파일 이름을 입력하면 은 중복을 무시해야합니다. 문제는 사용자도이 같은 벡터를 갖는 것을 만들 수 있다는 것입니다 : 나는 /path/to
에서 프로그램을 호출하고있어 고려
{
"myfile1.txt",
"/path/to/myfile1.txt",
"/path//to/myfile1.txt"
}
을, 세 개의 파일 이름이 같은 파일을 참조하지만 다른 문자열있어 .
fopen()
(이 아닌은 std::ifstream
)으로 열어야합니다.
그리고 프로세스를 시작하기 전에 모든 프로그램 fopen()
의 모든 파일을 확인해야 문제가되지 않습니다.
중복 된 파일 이름을 효과적으로 제거하는 방법이 있습니까?
왜 우리에게 세트가 없습니까? –
첫 번째 단계는 전체 경로를 정규화하여'/'를'/'로 대체 한 다음 간단한 작업 – vu1p3n0x
[도움이 필요] (http://www.boost.org/doc/libs /1_48_0/libs/filesystem/v3/doc/reference.html#canonical). 경로가 제대로 작동하고'if (exists) {...} '를 사용하면 경로가 존재할 때까지 존재하지 않을 수 있기 때문에 충분하지 않다는 점에 유의하십시오. – chris