КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Неформатируемый ввод- вывод
Когда вы открываете файл в текстовом режиме, происходит следующее: при вводе каждая пара символов '\r' + '\n' (возврат каретки + перевод строки) преобразуется в символ перевода строки '\n'; при выводе каждый символ перевода строки '\n' преобразуется в пару '\r' + '\n' (возврат каретки + перевод строки). Это не всегда удобно. Если вы собираетесь использовать выводимый файл для последующего ввода в (возможно, другую) программу, лишние байты информации ни к чему. С этой целью система вводавывода предоставляет вам возможность осуществления неформатируемого ввода-вывода, то есть записи и чтения двоичной информации (иногда говорят – сырых данных). Для осуществления ввода-вывода в двоичном режиме, включите флаг ios:: binary в параметр open_mode, передаваемый конструктору потока или функции open (). Чтение двоичной информации из файла осуществляется функцией read (), которая имеет следующий прототип: istream_type& read (char_type* s, streamsize n); Здесь параметр s задает буфер для считывания данных, а параметр n – число читаемых символов. Запись двоичных данных осуществляет функция-член write (): ostream_type& write (const char_type* s, streamsize n); Эта функция получает n символов из буфера, адрес которого задан параметром s, и вставляет их в поток вывода. Рассмотрим пример: // peregcincout.cpp: Defines the entry point for the console application. //
#include "stdafx.h" #include <iostream> #include <fstream> using namespace std; class Dot { int x; int y; public:
int GetX(){return x;} void SetX(int _x){x=_x;} Dot(int _x,int _y){x=_x;y=_y;} friend ostream & operator<<(ostream &out, Dot &d); friend istream & operator>>(istream &in, Dot &d); }; ostream & operator<<(ostream &out, Dot &d) { out<<d.x<<' '<<d.y<<' '; return out; } istream & operator>>(istream &in, Dot &d) { in>>d.x>>d.y; return in; } int _tmain(int argc, _TCHAR* argv[]) { Dot d1(9,2),d2(8,7); int x = 255; char S [ ] ="Testing bynary."; ofstream ofs ("Test.dat",ios::binary); // открывает файл для вывода в двоичном режиме if (! ofs) { cout << "File not open \n"; return 1; } ofs.write ((char*) & x, sizeof (int)); ofs.write ((char*) & S, sizeof (S)); ofs.write ((char*) & d1, sizeof (Dot)); ofs.write ((char*) & d2, sizeof (Dot)); x=33; ofs.write ((char*) & x, sizeof (int)); ofs.write ((char*) & S, sizeof (S)); ofs.write ((char*) & d2, sizeof (Dot)); ofs.write ((char*) & d1, sizeof (Dot)); ofs.close(); ifstream ifs ("Test.dat",ios::binary); // открывает файл для ввода в двоичном режиме if (! ifs) { cout << "File not open \n"; return 1; } while(ifs.read ((char*) & x, sizeof (int)),!ifs.eof()) { ifs.read ((char*) & S, sizeof (S)); ifs.read ((char*) & d2, sizeof (Dot)); ifs.read ((char*) & d1, sizeof (Dot)); cout << "\n x="<< x << " s= " << S << '\n'<<"d2="<<d2<< '\n'<<"d1="<<d1; } system("pause"); return 0; }
Дата добавления: 2014-01-04; Просмотров: 529; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |