Форум: Форум C++Разное
Новые темы: 00
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка содержимого файла
 
 автор: акваланг   (30.12.2006 в 13:24)   письмо автору
 
 

Пусть имеется текстовый файл со строками как можно отсортировать строки в файле?

  Ответить  
 
 автор: cheops   (30.12.2006 в 14:41)   письмо автору
 
   для: акваланг   (30.12.2006 в 13:24)
 

Можно поступить следующим образом
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

bool less_str(const string &fst, const string &snd)
{
  return fst.length() < snd.length();
}

int main()
{
  const int LENGTH = 80;
  vector<string> coll;
  vector<string>::iterator pos;
  // Имя файла
  char input[LENGTH];
  string str;
  FILE *fp;
  const char *filename = "test.txt"

  try
  {
    // Читаем содержимое файла в коллекцию
    fp = fopen(filename, "r");
    while(!feof(fp))
    {
      // Читаем строку из файла-источника
      if(fgets(input, LENGTH, fp))
      {
        cout << input << endl;
        str = input;
        coll.push_back(str);
      }
    }
    fclose(fp);

    // Сортируем коллекцию
    sort(coll.begin(), coll.end(), less_str);

    // Перезаписываем файл новыми значениями
    fp = fopen(filename, "w");
    for(pos = coll.begin(); pos != coll.end(); ++pos)
    {
      fputs((*pos).c_str(), fp);
    }
    fclose(fp);
  }
  catch(bad_alloc)
  {
    cout << "Не удалось выделить память под коллекцию\n";
  }

  return 0;
}

  Ответить  
 
 автор: акваланг   (02.01.2007 в 22:20)   письмо автору
 
   для: cheops   (30.12.2006 в 14:41)
 

Спасибо, я в STL не очень пока разбираюсь, но это работает :-)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования