Форум программистов, компьютерный форум CyberForum.ru

перегрузка функции << и >> - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Библиотека времени выполнения Microsoft Visual Studio C обнаружила неустранимую ошибку http://www.cyberforum.ru/cpp-beginners/thread591458.html
При компилирование Debug все работает отлично. Если компилирую Release то, компилируется нормально, но когда запускаю выдает ошибку. "Библиотека времени выполнения Microsoft Visual Studio C обнаружила неустранимую ошибку в AStar.exe. Для отладки нажмите кнопку "Прервать", для завершения нажмите кнопку "Продолжить"." Компилятор MS VS 2008
C++ Работа с массивом.Обработка текстов Задача: Определить порядковые номера, считая от начала текста, определенных символов, которые задаются в исходных данных, заменить пробелами все такие символы, имеющие нечетные номера. Проблема: Работает правильно, но считывает только по одному символу (букве). Как сделать чтобы программа производила работу с словами? #include <stdio.h> #include <conio.h> #include <math.h> #include... http://www.cyberforum.ru/cpp-beginners/thread591456.html
Дан файл, каждая запись которого содержит тройки чисел C++
Добрый день. Помогите пожалуйста с прогой: Дан файл, каждая запись которого содержит тройки чисел, соответствующих координатам центра и радиусу окружности. Построить на экране все окружности по данным, содержащимся в файле. Очень прошу!
C++ Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа
Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа. Простые числа это когда они делятся только на себя и на единицу Пожалуйста помогите решить не получается она неправильно считает #include <iostream.h> #include <stdio.h> #include <conio.h> using namespace std; int fun(int n,int m); main () {int s,n,m; s=fun(n,m);
C++ Копирование файла не используя системные библиотеки. нужен совет http://www.cyberforum.ru/cpp-beginners/thread591438.html
Нужно скопировать один файл в другой( названия вводятся с клавиатуры). написал, но не работает комп виснит, а в директории появляется файл весом 75мб, совершенно с другими символами. может быть ыв найдете мою ошибку?#include<stdio.h> #include<stdlib.h> #include<conio.h> int main(){ FILE *in,*out; char ch,st,st1; clrscr(); printf("asdf"); scanf("%s",st); printf("asdsadfq");
C++ Вывести для массива на экран сначала элементы, стоящие на четных местах, потом — на нечетных Есть небольшое задание, нужна помощь: 1) Использование условий для изменения элементов массива и вывода их на экран >> Задан массив. Вывести на экран сначала его элементы, стоящие на четных местах, потом - на нечетных. C# or C++ ========================================================================== 2) Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям. подробнее

Показать сообщение отдельно
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
30.05.2012, 19:43     перегрузка функции << и >>
вот проверьте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <fstream>
 
using namespace std;
char group[8]= "\0";
  char otchet[10]= "Print.txt";
  struct anketa         /* Объявление структуры нового типа (anketa), */
{ int num; int n;       /* описание полей (элементов) структуры       */
  char Fam[20];
  int dd,mm,yyyy;
  char pol[2];
  char address[40];
  friend istream& operator >> (istream& is, anketa &dan);
  //friend ofstream& operator << (ofstream& ofs, anketa &dan);
  friend ostream& operator << (ostream& os, anketa &dan);
};
// Переопределение стандартной операции при помощи операторной функции
  istream& operator>> (istream& is, anketa& dan)
{
  cout << "\n Num:"; is>>dan.num;
  cout << "\n Fam:"; is>>dan.Fam;
  cout << "\n Data rozhdeniya:";
  cout << "\n Day:"; is>>dan.dd;
  cout << "\n Month:"; is>>dan.mm;
  cout << "\n Year:"; is>>dan.yyyy;
  cout << "\n Pol:"; is>>dan.pol;
  cout << "\n Address:"; is>>dan.address;
  return is;
}
  ostream& operator << (ostream& os, anketa& dan)
{ char str[80];
  sprintf(str, "\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|",
  dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);
  str[79]= '\0';
  os<<str;
  return os;
}
/*  ofstream& operator << (ofstream& ofs, anketa& dan)
{ char str[80];
  sprintf(str, “\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|”,
  dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);
  str[79]= ‘\0’;
  ofs<<str;
  return ofs;
}*/
 void vvod();
 void vivod();
 
int main()
{
    setlocale(LC_CTYPE,"RUS");
    int key=0;
  do  {  cout << "\n             Меню               ";
         cout << "\n         1 - Ввод               ";
         cout << "\n         2 - Вывод              ";
         cout << "\n         3 - Конец              ";
         cout << "\n  Введите номер пункта меню:    ";
         cin >> key;
           switch(key)
        {  case 1: cout << "\n Введите группу"; /* Обработка события выбора пункта */
                   cin >> group;                /* меню- при вводе номера пункта   */
                   vvod(); break;               /* происходит выполнение функции,  */
           case 2: vivod(); break;             /* указанной в соотв. операт. case */
           case 3: break;
           default: cout << "\n Неверный номер!";
        }
      } while (key!=3);
  cout << "\n Конец программы.";
  return 0;
}
  void vvod()
  { int i, n =0;
  struct anketa A;
  cout << "\n Сколько анкет ввести? ";
  cin >> n;
  ofstream fout;                        // Создание 1 потока с именем fout для вывода
  fout.open(group, ios::out|ios::app);  /* Связывание потока с файлом (group) и */
    for(i=0;i<n;i++)                    /* определение режимов работы с ним     */
    { cout << "\n Ввод ” << i+1 << “-ой анкеты";
    cin >> A;
    fout.write((char*)&A,sizeof(struct anketa)); /* Вставка записи размером struct */
                                                 /* anketa в из области памяти по  */
                                                 /* указат. &A в поток вывода fout */
  } fout.close();                       // Закрытие потока, разрыв связи с файлом
}
 
  void vivod()
{ struct anketa A;
  ofstream fout(otchet,ios::out);
  fout << "список студентов группы " << group;
  ifstream fin;
  fin.open(group, ios::binary);
    while(!fin.read((char*)&A, sizeof(struct anketa)).eof())
  { fout<< A;
  }
  fout.close();}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru