Вот исправленная программа в ней всеравно ошибка :
error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::istream_iterator<struct Data,char,struct std::char_traits<char> >' (or there is no acceptable conversion)
Вот программа:
Код:

#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");
int choice;
cin>>choice;
return choice;
}
struct Data {
Data() : age(0) {}
// переменная для возраста
int age;
// переменная для имени
std::string name;
// переменная для фамилии
std::string surname;
friend ofstream& operator << (ofstream&, const Data&);
friend ostream& operator << (ostream&, const Data&);
friend ofstream& 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;
}
ofstream& 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 SearchFile();
};
// конструктор
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***********************************************************
void Man::SearchFile()
{
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;
}
// *******************************************************************************************************************
// функция показа содержимого файла
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.SearchFile();
break;
case 4:// Прощание с пользователем
RussianMessage("До Свидания\n");
return 0;
default: // Неправильный ввод
RussianMessage("Неверный Ввод\n");
}
}while(1);
}
Помогите пожалуста!!!