Посочинял немного | Код | #include <iostream> #include <fstream> #include <cstring> #include <list> #include <algorithm> using namespace std;
class Data { private: char sname[30]; char name[30]; char pname[30]; public: Data( char *_sname="", char *_name="", char *_pname=""); friend ostream & operator<< ( ostream & out, const Data & d ); // Вывод в консоль или текстовый файл friend istream & operator>> ( istream & in, Data & d ); // чтение с консоли или текстового файла const char * GetSname()const { return sname; } }; Data::Data( char *_sname, char *_name, char *_pname){ strcpy( sname, _sname ); strcpy( name, _name ); strcpy( pname, _pname ); } ostream & operator<<( ostream & out, const Data & d ){ out << d.sname << "\n"; out << d.name << "\n"; out << d.pname << "\n"; return out; } istream & operator>>( istream & in, Data & d ){ in >> d.sname; in >> d.name; in >> d.pname; return in; } // предикат class FindSname{ char name[30]; public: FindSname( char *str = "" ){ strcpy( name, str ); } bool operator()( const Data & d )const{ if( strcmp( name, d.GetSname() ) == 0 ) return true; else return false; } };
/////////////// main /////////////////// int main(int argc, char *argv[]) { // 1) создаём текстовый файл fstream file("text.txt", ios::in | ios::out | ios::trunc ); if( !file.is_open()){ cout << "Erroe open file !!!"; getchar(); return 1; } Data d; cout << "Enter data 3 empluee:\n"; // "Введите донные о 3 человеках" for( int i=0; i<3; i++ ){ cout << "Empluee " << i+1 << " :\n"; cin >> d; // читаем данные file << d; // записываем в файл } file.flush(); cout << "\n\n\n";
// 2) читаем из файла и просим указать что удалить list<Data> array; file.seekg(0); // к началу файла for( int i=0; file >> d; i++ ){ cout << "Empluee " << i+1 << " :\n"; array.push_back( d ); cout << d; } cout << "\n\n\nEnter delelte sname :"; char name[30]; cin >> name;
// 3) поиск и удаление из массива array и запись в файл list<Data>::iterator ptr; ptr = remove_if( array.begin(), array.end(), FindSname( name )); // удаление элементов array.erase( ptr, array.end()); // стирание из массива file.close(); // закрытие файла file.clear(); // сброс флагов file.open( "text.txt", ios::out ); // опять открываем и стираем старое содержимое файла for( ptr = array.begin(); ptr != array.end(); ++ptr ) file << *ptr; file.close(); // закрытие файла
fflush(stdin); getchar(); // пауза return 0; } ///////////////// End main //////////////////////
|
|