Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> файлы 
V
    Опции темы
papam
Дата 25.5.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: 1
Всего: 4



Вот есть программа:
Код

#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;

   }
    
};
struct Name:binary_function<Data,std::string, bool>
{

    Name(){}

    bool operator () (const Data& d, std::string str) const
    {
        
    
        return ( d.name == 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();
//    void Man::SaveFile();
};
// конструктор
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|ios::binary);
    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(Name(),name));

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

        // функция показа содержимого файла
        void Man::ShowFromFile()
    {
            fstream file("C://men.txt",ios::in);
            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);


}





Как сохранить найденного человека в другой файл? Не в men.txt 
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
bsa
Дата 25.5.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Ну блин! Молодец. А мы типа разбираться в ней должны.
поменяй название файла в Main::SaveToFile. 
PM   Вверх
mostly
Дата 25.5.2006, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 29.3.2006

Репутация: нет
Всего: нет



Вот так, наример:
Код

string s;
s="useful.txt";
ifstream file(&s[0]);//,ios::in  


А имя файла можно запросить при вводе и присвоить его переменной s. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.