Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencipta Strim Input daripada Memori Baca Sahaja dalam C?

Bagaimana untuk Mencipta Strim Input daripada Memori Baca Sahaja dalam C?

Susan Sarandon
Susan Sarandonasal
2024-11-09 20:45:02565semak imbas

How to Create an Input Stream from Read-Only Memory in C  ?

Membuat Strim Input daripada Memori Baca Sahaja

Anda mempunyai penimbal data yang ditunjuk oleh penunjuk const char* yang mengandungi rentetan ASCII . Anda mahu membaca data seolah-olah ia adalah strim, tanpa menyalin atau mengubahnya.

Penyelesaian

Untuk mencapai ini, anda boleh membuat penimbal strim tersuai. Begini caranya:

#include <streambuf>
#include <istream>

struct membuf: std::streambuf {
    membuf(char const* base, size_t size) {
        char* p(const_cast<char*>(base));
        this->setg(p, p, p + size);
    }
};

struct imemstream: virtual membuf, std::istream {
    imemstream(char const* base, size_t size)
        : membuf(base, size),
          std::istream(static_cast<std::streambuf*>(this))
    {}
};

Kelas membuf mengandungi penimbal strim yang berbunyi daripada penunjuk const char*. Kelas imemstream mewarisi daripada membuf dan menambahkan fungsi yang diperlukan untuk menjadikannya strim input.

Untuk menggunakan imemstream, anda boleh membuat instantiat dan menggunakannya seperti ini:

imemstream in(data, size);
in >> value;

Ini akan dibaca data daripada penimbal seolah-olah ia adalah aliran, tanpa mengubah suainya.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Strim Input daripada Memori Baca Sahaja dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn