Строковые потоки,их свойства,назначение.
Особой разновидностью потоков являются строковые потоки, представленные классом strstream:
Строковые потоки позволяют облегчить формирование данных в памяти. В примере демонстрируется ввод данных в буфер, копирование их в компоненту s класса string и их просмотр.
class string { char s[80]; public: string(char *S)
{for(int i=0;s[i++]=*S++;);} void see(){cout<<s<<endl;} };
void fun(const char *s) { strstream st; // создание объекта st
st << s << ends; // вывод данных в поток (в буфер)
string obj(st.str()); // создание объекта класса string
st.rdbuf()->freeze(0); // освобождение памяти в буфере
obj.see(); // просмотр скопированной из буфера строки}
main() { fun("1234"); }
21.Иерархия классов потоков ввода\вывода. Механизм связывания потока с файлом.
В языке С++ для организации работы с файлами используются классы
потоков ifstream (ввод), ofstream (вывод) и fstream (ввод и вывод) (рис. 8).
Перечисленные классы являются производными от istream, ostream и
iostream соответственно. Операции ввода−вывода выполняются так же, как и для других потоков, то есть компоненты-функции, операции иманипуляторы могут быть применены и к потокам файлов. Различие состоит в том, как создаются объекты и как они привязываются к требуемым файлам.
Рис. 8. Часть иерархии классов потоков ввода–вывода
В С++ файл открывается путем стыковки его с соответствующим потоком. Рассмотрим организацию связывания потока с некоторым файлом. Для этого используются конструкторы классов ifstream и ofsream:
|
|
ofstream(const char* Name, int nMode= ios::out, int nPot= filebuf::openprot);
ifstream(const char* Name, int nMode= ios::in, int nPot= filebuf::openprot);
Первый аргумент определяет имя файла (единственный обязательный
параметр).
Второй аргумент задает режим для открытия файла и представляет бито-
вое ИЛИ (|) величин:
Третий аргумент – данное класса filebuf используется для установки атрибутов доступа к открываемому файлу.
Дата добавления: 2015-12-21; просмотров: 15; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!