Имя пользователя:
Пароль:
 

Название темы: файлы
Показать сообщение отдельно

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Все исправил! Компилируется!!! Но не записывает в файл
Вот код,гляньте:
Код: Выделить весь код
#include <iostream>
#include <algorithm>
#include <fstream>
#include <string>
#include <vector>
#include <iterator>
#include <functional>

using namespace std;

#include "windows.h"

void RussianMessage(char *message){
    char rmessage[256];
    CharToOem(message,rmessage);
    cout<<rmessage;
}

int RussianMenu(){
    RussianMessage("\nВведите 1 для добавления новой структуры в файл\n");
    RussianMessage("Введите 2 для показа всех структур из файла\n");
    RussianMessage("Введите 3 для поиска по фамилиии\n");
    RussianMessage("Введите 4 для поиска по имени\n");
    RussianMessage("Введите 5 для выхода\n");
    int choice;
    cin>>choice;
    return choice;
}

struct Data {
    Data() : age(0) {}
    // переменная для возраста
    int age;
    // переменная для имени
    std::string name;
    // переменная для фамилии
    std::string surname;

    

	  //ofstream& operator << (ofstream&, const Data&);  
    // ostream& operator << (ostream&, const Data&);
     //istream& operator >> (istream&,  Data&);
	
};

ostream& operator << (ostream& stream, const Data& d)
{

    RussianMessage("\nИмя: ");
    stream<<d.name.c_str();

    RussianMessage("\nФамилия: ");
    stream<<d.surname.c_str();

    RussianMessage("\nВозраст: ");
    stream<<d.age;
    return stream;

}

 ofstream& operator << (ofstream& stream, const Data& d)
{
    // Записываем возраст
    stream<<d.age<<' ';
    // Записываем имя
    stream<<d.name.c_str()<<' ';
    // Записываем фамилию
    stream<<d.surname.c_str()<<' ';
    return stream;

}

istream& operator >> (istream& stream,  Data& d)
{
    stream>>d.age;
    stream>>d.name;
    stream>>d.surname;

    return stream;
}


struct Pred:binary_function<Data,std::string, bool> {

    Pred(){}

    bool operator () (const Data& d, std::string str) const
    {
        return ( d.surname == str)? true : false;

    }
};

class Man{
    Data data_;
    
public:
    // конструктор с параметрами
    Man(char *n,char *s,int a);
    // конструктор
    Man();
    // функция ввода данных 
    void Put();
    // функция показа данных
    void Show();
    // функция сохранения в файл
    void SaveToFile();
    // функция показа содержимого файла
    void ShowFromFile();
    void SearchFileN();
    void SearchFileF();
};
// конструктор
Man::Man(){}

// конструктор с параметрами
Man::Man(char *n,char *s,int a){
    data_.name.assign(n);
    data_.surname.assign(s);
    data_.age = a;
}
    


// функция ввода данных 
void Man::Put(){
    std::string temp;
    RussianMessage("\nВведите имя:\n");
    cin>>temp;

    data_.name.assign(temp);

    
    RussianMessage("\nВведите фамилию:\n");
    cin>>temp;

    data_.surname.assign(temp);

    RussianMessage("\nВведите возраст\n");
    cin>>data_.age;
}

// функция показа данных
void Man::Show(){
    RussianMessage("\nИмя:\n");
    cout<<data_.name;
    RussianMessage("\nФамилия:\n");
    cout<<data_.surname;
    RussianMessage("\nВозраст:\n");
    cout<<data_.age<<"\n";
}
// функция сохранения в файл
void Man::SaveToFile(){
    
    ofstream file("c:\\men.txt",ios::out|ios::app);
    if(!file){
        RussianMessage("Файл не открылся для чтения !!!");
        exit(1);
    }
    
//    file<<data_;
}
//****************************poisk po familii***********************************************************
void Man::SearchFileF()
{
    std::string surname;
    
    fstream file("C://men.txt",ios::in);
    if(!file)
	{
        RussianMessage("Файл не открылся для чтения !!!");
        exit(1);
    }

    istream_iterator<Data> first(file), last , pos;

        RussianMessage("Введите фамилию:"); 
        cin>>surname;

        pos = std::find_if(first,last,bind2nd(Pred(),surname));

        if(pos == last)
            RussianMessage("\nТакого сотрудника нет!\n");   
        else
            cout<<*pos;
        
    
 }

//  *******************************************************************************************************************
//***********************poisk po imeni*********************************************************************************
void Man::SearchFileN()
{
    std::string name;
    
    fstream file("C://men.txt",ios::in);
    if(!file)
	{
        RussianMessage("Файл не открылся для чтения !!!");
        exit(1);
    }

    istream_iterator<Data> first(file), last , pos;

        RussianMessage("Введите имя:"); 
        cin>>name;

        pos = std::find_if(first,last,bind2nd(Pred(),name));

        if(pos == last)
            RussianMessage("\nТакого сотрудника нет!\n");   
        else
           cout<<*pos; 
        
    
}
//*************************************************************************************************************************
        // функция показа содержимого файла
        void Man::ShowFromFile(){
            fstream file("C://men.txt",ios::out);
            if(!file){
                RussianMessage("Файл не открылся для чтения !!!");
                exit(1);
            }

             istream_iterator<Data> first(file), last;

            copy(first,last, ostream_iterator<Data>(cout,"\n"));
            
        }
int main(){
    
Man a;
do{
    switch(RussianMenu()){

case 1: // Добавление записи
    a.Put();
    a.SaveToFile();
    break;
case 2: // Показ всех записей
    a.ShowFromFile();
    break;
case 3:
    a.SearchFileF();
    break;
case 4:
	a.SearchFileN();
    break;
case 5://  Прощание с пользователем
    RussianMessage("До Свидания\n");
    return 0;
default: // Неправильный ввод
    RussianMessage("Неверный Ввод\n");
                    }

}while(1);


}

Отправлено: 22:25, 24-05-2006 | #5

Название темы: файлы