Advertisement
kqlul123

000

Nov 19th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. ofstream s1;
  2. ofstream s2("f2.aaa");
  3. fstream s3;
  4. fstream s4("f4.aaa", ios::in | ios::out);
  5.  
  6. s1.open("f1.aaa");
  7. s3.open("f3.aaa", ios::in | ios::out);
  8.  
  9. int a = 25;
  10. float b = -7.41;
  11. char c[80] = "Hi!";
  12.  
  13. s1 << " " << a*4 << " " << b; // 100 -7.41(f1.aaa)
  14. s3 << " " << c << " " << "my_dear" ; // Hi! my_dear(f3.aaa)
  15.  
  16. Если открыть любой поток любым способом, файловый курсор устанавливается на начало потока.
  17. Если с помощью ofstream открыть файл, содержащий информацию, информация будет уничтожена.
  18. Если с помощью ofstream открыть несуществующий файл, он будет создан.
  19.  
  20. Когда работа с потоком закончена, его нужно закрыть с помощью метода close.
  21. s1.close(); s2.close(); s3.close(); s4.close();
  22.  
  23. ifstream s1; //Err, s1 уже определен как ofsteam
  24. ifstream s5("f1.aaa");
  25.  
  26. К одному и тому же файлу можно привязать сколько угодно файловых потоков(файловых переменных)
  27.  
  28. s5 >> a; cout << a; //100
  29.  
  30. s3.open("f1.aaa", ios::in | ios::out);
  31. s3 >> a; cout << a; //100, новый поток, файловый курсор в начале потока
  32. s3 << " " << "Привет"; // 100 Привет
  33.  
  34. s2.open("f3.aaa"); //Данные в f3 удалятся
  35.  
  36. Методы для определения положения файлового курсора.
  37.  
  38. поток.tellp(); //ofstream, fstream
  39. поток.tellg(); //ifstream, fstream
  40.  
  41. Перемещение файлового курсора можно осуществить с помощью методов группы seek.
  42.  
  43. поток.seekp(a,b);//ofstream, fstream
  44. поток.seekg(a,b);//ifstream, fstream
  45.  
  46. a - целое число, показывает смещение позиции b;
  47. b - одна из символических констант(ios::beg - начало файла, ios::end - конец файла, ios::cur - текущая позиция)
  48.  
  49. s3.seekp(0, ios::beg);//Перемещение в начало.
  50.  
  51. поток.eof(); 0 - false, not 0 - true;
  52. while(поток.eof()!= 0)
  53. {
  54. поток >> (<<);
  55. }
  56.  
  57. Иногда бывает нужно для продолжения работы с файловым потоком его реанимировать.
  58. поток.clear(0);
  59.  
  60.  
  61. Пример:
  62.  
  63.  
  64. (из прошлой лекции)
  65. Разработка класса СОБАКА
  66.  
  67. class TDog
  68. {
  69. friend class TFile;
  70. private:
  71. char klichka[20];
  72. int god_rojdeniya;
  73. float OC[N];
  74. public:
  75. ..........
  76. Перегрузка:
  77. cin>>x; cout<<x;
  78. Поток операция объект.
  79.  
  80. friend istream& operator >> (istream& is, TDog& d);
  81. friend ostream& operator << (ostream& os, TDog& d);
  82. На выводе измененный поток.
  83. };
  84.  
  85. Реализация:
  86. istream& operator>>(istream& is, TDog& d)
  87. {
  88. is>>d.kilchka;
  89. is>>d.god_rojdeniya;
  90. for(int i=0; i<N; i++)
  91. {
  92. is>>d.OC[i];
  93. }
  94. return is;
  95. }
  96.  
  97. ostream& operator<<(ostream& os, TDog& d)
  98. {
  99. os << " " << d.klichka << " " << d.god_rojdeniya;
  100. for(int i=0; i<N; i++)
  101. {
  102. os << " " << d.OC[i];
  103. }
  104. return os;
  105. }
  106.  
  107.  
  108.  
  109. void main()
  110. {
  111. TDog sobaka;
  112. cout << "Вв. кличку, год и 5 оценок" ;
  113. cin >> sobaka;
  114. .........
  115. cout << "Информация о собаке";
  116. cout << sobaka;
  117. }
  118.  
  119.  
  120. class TFile
  121. {
  122. char fn[80]; //Имя файла
  123. TDog xddd;
  124. public:
  125. TFile(); //Конструктор
  126. void fcreate();
  127. void fread();
  128. void add_rec();
  129. void XDobrabotka(); //обработка
  130. };
  131.  
  132. TFile::TFile()
  133. {
  134. strcpy (fn, "MyDogs.aaa");
  135. }
  136.  
  137. void TFile::fcreate()
  138. {
  139. ofstream xd(fn);
  140. cout << "Введи информацию о СОБАКЕ" << endl;
  141. //В классе TDog предусмотреть метод - подсказку для ввода данных о СОБАКЕ.
  142. cin >> xddd;
  143. xd << xddd;
  144. xd.close();
  145. }
  146.  
  147. void TFile::fread()
  148. {
  149. ifstream xd(fn);
  150. //Вывод шапки таблицы, в ЛР добавить в класс TDog метод выводящий шапку таблицы.
  151. while(!xd.eof())
  152. {
  153. xd >> xddd;
  154. cout << xddd;//При таком выводе данные отобразятся на экране НЕКРАСИВА(предусмотреть в классе TDog метод для форматированного вывода данных о СОБАКЕ)
  155. }
  156. xd.close();
  157. }
  158.  
  159. void TFile::add_rec()
  160. {
  161. fstream xd(fn, ios::in | ios::out);
  162. xd.seekg(0, ios::end);
  163. cout << "Введи информацию о СОБАКЕ" << endl;
  164. cin >> xddd;
  165. xd << xddd;
  166. s.close();
  167. }
  168.  
  169. Вывести информацию обо всех собаках, родившихся после 2015 года
  170. void TFile::XDobrabotka()
  171. {
  172. int flag = 0;
  173. ifstream xd(fn);
  174. //Вывод шапки таблицы, в ЛР добавить в класс TDog метод выводящий шапку таблицы.
  175. while(!xd.eof())
  176. {
  177. xd >> xddd;
  178. if(xddd.god_rojdeniya > 2015)
  179. {
  180. cout << xddd;
  181. //использовать метод форматирования
  182. flag = 1;
  183. }
  184. if (!flag) cout << "Таких СОБАК нет" << endl;
  185. xd.close();
  186. }
  187.  
  188.  
  189. void main()
  190. {
  191. int i; //Пожелание пользователя
  192. Создать объект TFile;
  193. do
  194. {
  195. меню
  196. cin>>i;
  197. switch case
  198. }while(i!=0);
  199. (1-4 методы, все не 0 - дефолт, 0 - выход)
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement