سؤال

وأنا أكتب ملف ثنائي باستخدام fstream وعندما فتح الملف باستخدام العلم ثنائي.

وكنت بحاجة لكتابة بعض النصوص كما الثنائي الذي قام الكتابة بسيط خدعة. المشكلة هي أنني بحاجة أيضا إلى إرسال (كما هو موضح في ست عشري) 0. يظهر القيمة عندما افتتح في المفكرة الثنائية الصفر، ولكن عندما حاولت أن أكتب هذه القيمة لا الصفر كان قيمة 30 في عشري.

وكيف تكتب بيانات محددة مثل هذا؟

هل كانت مفيدة؟

المحلول

عند فتح fstream استخدام العلم ios::binary لتحديد الناتج ثنائي. ويمكن الاطلاع على مزيد من المعلومات هنا .

وأما بالنسبة للكتابة 0، عندما ترى 30 في السداسي كنت كتابة <م> الطابع '0'، وليس ثنائي عدد 0. للقيام بذلك مع fstream يمكنك أن تفعل شيئا مثل:

my_fstream << 0;

ونضع في اعتبارنا البيانات الثنائية 0 لا يوجد لديه تمثيل نصية، حتى أنك لن تكون قادرا على قراءة في المفكرة وكأنك سوف تكون قادرة على قراءة الحرف '0'.

نصائح أخرى

وربما كنت فقط بحاجة الى شيء من هذا القبيل، وتحسين النحو الذي تراه مناسبا:

ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
    char buf[1] = {0};
    file.write(buf, sizeof(buf));
    file.close();
}

وروابط لالحلول وثائق أكثر تطورا تم نشرها بالفعل.

ونلقي نظرة على هذا: http://www.cplusplus.com/forum/general/11272/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top