الذاكرة ككائن للتدفق في ++C

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();


   }




التسميات: