2015-08-18 3 views
-5

У меня есть имена файлов в каталоге (а также в массиве). Имена файлов выглядят следующим образом: F1S01.C01, F1S03.C02, F1S02.C02 и так далее.Сортировка строк на среднем имени в C++?

файлы не сортируются в этом массиве, и я хотел бы, чтобы отсортировать их по примеру:

F1S01.C01 
F1S02.C01 
F1S03.C01 

И:

F1S01.C02 
F1S02.C02 
F1S03.C02 

И:

F1S04.C01 
F1S05.C01 
F1S06.C01 

Итак, Мне всегда нужен файл 3 (ровно 3) с тем же «окончанием», например .C01, но с увеличением S01, S02 и S03 (или S04, S05 и S06). Есть ли способ сортировки файлов в соответствии с моим примером?

+3

Да, есть способ, но вы должны показать некоторое усилие. Также Title говорит C, а тег говорит C++. И если это единственное, что вам нужно, то программа не является хорошим инструментом. Лучше отказаться от некоторых сценариев. – luk32

+0

Итак, каков будет путь? – Darius

+1

@Darius Просьба показать определение массива. Неясно, является ли это двухмерным массивом символов или представляет собой массив объектов типа std :: string и т. Д. –

ответ

0

Я написал этот код

#include <iostream> 
#include <string> 
#include <fstream> 
#include <vector> 
#include <algorithm> 
using namespace std; 

bool WayToSort(string i, string j) { return i < j; }; 

int main() 
{ 
vector<string> pich = {"F1S01.C01", "F1S03.C02", "F1S02.C02", "F1S01.C02", "F1S03.C03", "F1S02.C03", "F1S01.C03", "F1S03.C01", "F1S02.C01"}; 
sort(pich.begin(),pich.end(),WayToSort); 

    for (string &s : pich) cout << s << endl; 
    return 0; 
} 

В результате

F1S01.C01 
F1S01.C02 
F1S01.C03 
F1S02.C01 
F1S02.C02 
F1S02.C03 
F1S03.C01 
F1S03.C02 
F1S03.C03 

НО вы хотели противоположный результат, просто изменить функцию WayToSort, вероятно, вы можете использовать .operator для разделения двух частей.

+0

Спасибо за ваш ответ! Это не совсем то, что мне нужно, мне нужен .C01, чтобы быть вместе. Таким образом, вывод должен быть таким: F1S01.C01 F1S02.C01 F1S03.C01 F1S01.C02 F1S02.C02 F1S03.C02 и так далее .. К сожалению, не читал ваш пост через конец, я попробую это! – Darius

+0

@Darius Я могу дать вам идею, может быть создание структуры с. между двумя частями. –

Смежные вопросы