{ char buf[1024];// Буфер
 double a=2.2222, b=5.5555;
 strstream f(buf, sizeof buf, ios::in|ios::out);
 f << a << " " << b << '\0';// Запис у буфер
 double x,y; f >> x >> y;// Читання з буфера
 cout << x << " " << y << endl;// Виведення на екран
 cout << buf << endl;// А що в буфері?
 pause;
 }
  
 Одержання дескрипторів файлів
 Для виконання деяких низькорівневих операцій з файлами використовуються дескриптори файлів. Дескриптор - унікальне ціле число, яке працює як логічний номер файлу. Потокові класи дозволяють досить просто одержати дескриптор будь-якого файлу. Розглянемо наступний приклад:
 ifstream fa("A.dat");
 cout << "Дескриптор файлу = << (fa.rdbuf())->fd() << endl;
 Для визначення дескриптора спочатку викликається функція-член потоку rdbuf() класу fstream для об'єкта fa. Вона повертає адресу спеціального об'єкту класу filebuf, який асоційовано з fa. Такий об’єкт є буфер, що створюється для забезпечення роботи кожного потоку, він містить у собі також і дескриптор файлу. Далі викликається функція fd() - член класу filebuf, вона саме й повертає дескриптор файлу fa.
 Для того, щоб уникнути записів громіздких і малозрозумілих виразів, які обчислюють дескриптори, можна побудувати спеціальну функцію або відповідний макрос. Нижче наведені приклади побудови функції й макросу для одержання дескрипторів файлів.
 У наступному прикладі побудована зручна функція descr для одержання дескриптору файла.
  
 // Приклад 8
 #include <fstream.h>
 template <class FSTR>
 // шаблон FSTR може приймати значення,
 // ifstream, ofstream, fstream
 int descr(FSTR& f)
 { return (f.rdbuf())->fd();
 }