2010-01-09 3 views
0

공통 루트를 가질 수있는 파일 이름을 정렬해야하지만 그 다음에는 반드시 균일하게 채워지지 않은 숫자가옵니다. 하나의 예는 Windows에서 여러 파일의 이름을 바꿀 때 얻는 것입니다.C++에서 패딩되지 않은 숫자로 파일 이름을 정렬하는 방법은 무엇입니까?

filenamea는 (1) 된 .txt filenamea ... (10) ...가 filenamea (100)를 .txt 를 .txt (2) filenamea ... filenameb.txt 를 .txt로 .. . filenamec (1)의 관점에서 하나의 문자와 같은 번호 (숫자의 연속 된 순서)를 처리하는 것이다

답변

5

이미 비슷한 질문이 있습니다. 나는 Sort on a string that may contain a numberHow to implement a natural sort algorithm in C을 알고 있습니다. 따라서 더 많은 영감과 도움을 얻을 수있는 곳을 찾아 볼 수도 있습니다.

두 질문의 답변은 기본적으로 파스칼 쿠옹 (Pascal Cuoq)이 제안한 내용 인 http://www.davekoelle.com/alphanum.html을 제안합니다.

당신은 또한 다른 알고리즘이 연결되어 코딩 호러 기사를 볼 수 있습니다 : 영숫자에 대한 Sorting for Humans : Natural Sort Order

+0

+1 (http://www.davekoelle.com/alphanum.html) –

+0

나를 위해 치료를 작동 포인터 주셔서 감사. 나는 그것이 이름을 가지고 있다고 확신했다. (나는 10 년 이상 전에 이것을 수행 한 것을 Mac OS라고 생각한다). –

+0

이 알고리즘은 문자열 내에서 숫자를 처리하기 때문에 OP가 원했던 것보다 훨씬 뛰어납니다. :) –

1

한 용액 등

및 .txt로 (2) filenamec을 ...를 .txt 사전 편찬 순서.

"filenamea (3) .txt", "filenamea (20) .txt"및 "filenamea (100) .txt"는 모두 길이가 같으며이 순서대로 정렬됩니다. 당신이 원하는 것 (?)

관련 문제