سؤال

هذا السؤال لديه بالفعل إجابة هنا:

لدي Bitset STD :: Bitset أود أن أكتب إلى ملف، بت لبعض القليل، ولكن بطبع وظيفة كتابة FSTREAM لا تدعم هذا. لا أستطيع التفكير في طريقة أخرى إلى تحويل كل مجموعة 8 بت إلى سحر باستخدام سلسلة وكتابة ذلك ...

أي شخص يعرف طريقة جيدة؟

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

المحلول

محاولة:

#include <bitset>
#include <fstream>

int main() {
    using namespace std;
    const bitset<12> x(2730ul); 
    cout << "x =      " << x << endl;

    ofstream ofs("C:\\test.txt"); // write as txt
    if (ofs) {
        // easy way, use the stream insertion operator
        ofs << x << endl;

        // using fstream::write()
        string s = x.to_string();
        ofs.write(s.c_str(), s.length()); 
    }
    return 0;
}

نصائح أخرى

حسنا، "طريقة" للقيام بذلك هي استخدام السلسلة كطريقة التسلسل الخاصة بك. يوجد منشئ Bitset الذي يأخذ حجة سلسلة، وهناك وظيفة عضو TO_STRING () التي ترجع واحدة. هناك أيضا << و >> مشغلو المساعد الذين يستخدمون ذلك utlize the Builtor and To_String () وظيفة لإدراج دفق واستخراج. قد يعمل ذلك من أجلك اعتمادا على الاحتياجات الخاصة بك.

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

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