소프트웨어 개발에서는 내용을 복사하거나 변경하지 않고 메모리 버퍼에서 데이터를 읽어야 하는 경우가 많습니다. 그러한 시나리오 중 하나는 데이터가 상수 문자 포인터(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!