
- •Int main(){
- •Void unsetf( fmtflags флаги );
- •Int main(){
- •0 False
- •Iostream& manip_name (iostream& stream){
- •If (stream.Rdstate() & ios::eofbit)…
- •Istrea& putback( char ch );
- •Int main()
- •If (!f.Is_open()) return 1;
- •Istream& getline (char* buf, streamsize num);
- •Istream& getline (char* buf, streamsize num, char delim);
- •Int_type peek();
- •Istream& read(char* buf, streamsize num);
- •Istream& seekg( off_type offset, seekdir origin);
- •Istream& seekg( pos_type pos);
- •Istrstream::istrstream( const char* buf);
- •Istrstream::istrstream( const char* buf, streamsize size);
- •Int main(){
- •Int main(){
- •Istrstream si(s);
- •Int count;
- •Void reset(int n)
- •Int main()
- •Int main()
- •Int main(){
- •Int main(){
- •Int main () {
- •V.Push_back ((char*) "zippy");
- •V.Push_back ((char*) "motorboy");
- •Int main () {
Istrstream::istrstream( const char* buf);
Istrstream::istrstream( const char* buf, streamsize size);
Особенности:
buf - указатель на символьный массив, который используется как источник данных
содержимое buf должно завершаться нулевым байтом
size - число используемых символов строки
/* пример ниже для ввода и вывода */
3.18
Создание буферизированного потока вывода.
ostrstream::ostrstream (char* buf, streamsize size, openmode mode = ios::out);
ostrstream::ostratream();
Особенности:
buf - указатель на массив, который используется как приемник данных
size - размер символьного массива ( если массив будет переполнен, то возникнет ошибка )
mode - способ открытия
при использовании конструктора по умолчанию поток связан с динамическим массивом ( растет автоматически )
Функция pcount().
streamsize pcount();
Особенности:
метод буферизированного потока
предназначена для определения количества символов, записанных в символьный массив
возвращает количество записанных символов с учетом нулевого байта
Доступ к динамическому массиву.
char* str();
Особенности:
метод буферизированного потока
предназначена для заморозки ( блокировки для вывода ) динамического массива и открытия доступа к его элементам
возвращает указатель на байтовый массив
Функция freeze().
void freeze(bool action = true);
Особенности:
метод буферизированного потока
предназначена для управления доступом к динамическому массиву
true - заморозка массива
false - разморозка массива
#include <iostream>
#include <strstream>
using namespace std;
Int main(){
char ch, *s, str[80];
double d; int i;
strstream sio;
sio << "test dynamical array ";
sio << 123.456 << " " << 789;
i = sio.pcount() // считаем кол-во символов в потоке
s = sio.str(); // получаем массив с содержимым потока
for (int c = 0; c < i; ++c) cout << s[c];
sio << " 111 " ; // ошибка - запись в замороженный поток
sio.freeze(false); // размораживаем поток
sio.clear(); // убираем badbit
sio << " 222 ";
sio >> ch;
while ( ch ){
cout << ch;
sio >> ch;
}
return 0;
}
3.19
Бинарный буферизированный ввод-вывод.
Массивы, связанные с буферизированными потоками могут содержать бинарную информацию.
Особенности:
для распознавания конца массива используется метод eof()
для чтения и записи символов используются методы get() , put()
для чтения - записи блоков данных - read(), write()
#include <iostream>
#include <strstream>
using namespace std;
Int main(){
char *s = "\1\2\3\4\5\6\7\8\9\10";
Istrstream si(s);
char ch;
si.get(ch);
while( !si.eof() ){
cout << hex << showbase << (int) ch << ' ';
si.get(ch);
}
return 0;
}
// =====================
0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x8 0xa
// =====================
3.20
Пространства имён предназначены для локализации имен идентификаторов и предотвращения их конфликтов-одно и то же имя, упомянутое в разных контекстах больше не вызывает конфликтов. Теперь стандартная библиотека с++ выведена из глобального пространства имён и определена внутри собственного пространства имен std, что уменьшило конфликты.
Объявление пространства имен
namespace nnamespace_name{
// ...
}
Особенности
предотвращение конликтов имен фукнций или переменных
можно разбить объявление одного и того же пространства имен на несколько частей
нельзя объявить пространство имен внутри функции либо любой другой ограниченной области видимости
могут быть вложенными
пространство имен - область видимости
3.21
Обращение к элементам пространства имен.
Код, расположенный внутри некоторого пространства имён, может обращаться непосредственно к идентификаторам, объявленным внутри этого же пространства имён, а объекты к своим методам.
Чтобы обратиться к элементу пространства имён извне, следует перед его именем указать имя пространства и оператор разрешения видимости name::member.
#include <iostream>
using namespace std;
namespace counter_namespace
{
int up;
int lo;
class counter
{