>  기사  >  백엔드 개발  >  불변 메모리에서 입력 스트림을 어떻게 만들 수 있나요?

불변 메모리에서 입력 스트림을 어떻게 만들 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-09 04:47:01501검색

How can I create an input stream from immutable memory?

불변 메모리에서 입력 스트림 구성

소프트웨어 개발에서는 내용을 복사하거나 변경하지 않고 메모리 버퍼에서 데이터를 읽어야 하는 경우가 많습니다. 그러한 시나리오 중 하나는 데이터가 상수 문자 포인터(const char*)에 저장되는 경우입니다. 이러한 버퍼에서 편리하게 읽을 수 있도록 하려면 입력 스트림을 생성하는 것이 실행 가능한 솔루션입니다.

사용자 정의 스트림 버퍼를 사용하면 변경할 수 없는 메모리에서 입력 스트림을 쉽게 생성할 수 있습니다. 구현 방법은 다음과 같습니다.

#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)) {
    }
};

const_cast&> ()는 스트림 버퍼가 데이터를 수정하지 않기 때문에 필요하지만 인터페이스에는 문자가 필요합니다.

스트림 버퍼가 생성되면 이를 사용하여 입력 스트림을 초기화할 수 있습니다. 버퍼에서 데이터를 읽습니다.

imemstream in(data, size);
int x;
float y;
std::string w;
in >> x >> y >> w;

위 내용은 불변 메모리에서 입력 스트림을 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.