الذاكرة ككائن للتدفق في ++C
الذاكرة ككائن للتدفق
يمكننا أن نعامل مساحة معينة من الذاكرة ككائن تدفق ندخل فيها بيانات بالضبط كما نفعل مع ملف , وهي إمكانية مفيدة في حالة الرغبة في تشكيل الخرج علي صورة معينة (كأن تخرج الأعداد بعددين عشريين فقط) , ولكنك تريد أيضا أن تستخدم الدوال المخرجة للنصوص التي تتطلب عبارات نصية كمدخلات . هذا المطلب شائع بالنسبة للواجهات الرسومية GUI .
وهناك عائلة من فئات التدفقات تتعامل مع هذا النوع من التشكيل داخل الذاكرة فللخرج لدينا الفئة ostrstream المشتقة من ostream (مع أشياء أخري ) , وللإدخال لدينا istrsteam المشتقة من istream ولكائنات الذاكرة لدينا strstream المشتقة من iostream للإدخال والإخراج .
والشئ الغالب أن تحتاج إلي ostream وفي مثالنا نبين لك كيف يكون ذلك . سوف نبدأ بإنشاء ذاكرة مرحلية للبايتات , ثم كائن منتم إلي ostrsteam مستخدمين الذاكرة المرحلية buff وحجمها كمعاملين لبادئة التدفق . والأن يمكننا إخراج النص المهيأ إلي الذاكرة المرحلية كما لو كان كائنا لتدفق , وإليك صياغة البرنامج .
ostrstr.cpp
// ostrstr.cpp
// writes formatted data into memory
#include <strstrea.h> // for ostrstream class
#include <iomanip.h> // for setiosflags()
#include <conio.h>
const int SIZE = 80; // size of memory buffer
void main()
{
char ch = 'x'; // test data
int j = 77;
double d = 67890.12345;
char str1[] = "Kafka";
char str2[] = "Freud";
char membuff[SIZE]; // buffer in memory
ostrstream omem(membuff, SIZE); // create stream object
omem << "ch=" << ch << endl // insert formatted data
<< "j=" << j << endl // into object
<< setiosflags(ios::fixed) // format with decimal point
<< setprecision(2) // two digits to right of dec
<< "d=" << d << endl
<< "str1=" << str1 << endl
<< "str2=" << str2 << endl
<< ends; // end the buffer with '\0'
cout << membuff; // display the memory buffer
getche();
}
تعليقات
إرسال تعليق