나는 boost::iostream
메모리 맵 파일에 초보자이며 클래스를 이해하는 데 어려움을 겪고 있습니다.읽기 및 쓰기 모두에 대해 부스트 스트림 메모리 맵을 여는 방법
필자의 기능으로 쓰기와 읽기를위한 새로운 메모리 맵 파일을 생성하고 싶습니다. 글쓰기 부분에 성공했지만 값을 다시 읽는 법을 모르겠습니다.
mapped_file_params::mode
매개 변수처럼 보이는 문서를 읽는 것은 mapped_file_source
및 mapped_file_sink
클래스 모두에 의해 무시됩니다.
가능하면 스트림으로 사용하고 싶으므로 seekg
및 read
을 사용하고 싶습니다.
사용할 수 없다면 무엇을 사용할 수 있습니까? 다시 읽을 때 mapped_file_sink::data()
을 사용해도 되니? 내 코드
namespace bip = boost::iostreams;
bio::mapped_file_params prm("data.out");
prm.new_file_size = 256; // in reality it will be bigger.
prm.mode = std::ios::in | std::ios::out;
bio::stream<bio::mapped_file_sink> ooo;
ooo.open(bio::mapped_file_sink(prm));
char AA;
AA = 'A';
ooo.write(&AA,1);
AA = 'B';
ooo.write(&AA,1);
char BB;
bio::seek(ooo,0,BOOST_IOS::beg);
ooo.read(&BB,1); // this fails
cout << B << endl;
안녕하세요. Wojtek. 고마워요. 이제 내가 다음과 같은 스트림에 전달하고 싶다고 가정 해 봅시다. 그러나 그것이 맞다면 100 % 확실하지 않습니다 : bio :: stream bs (f); iostream & s (bs); 여기서 f는 bio :: mapped_file입니다. 그것은 괜찮아 보인다. 그 접근법에 문제가 있습니까? –
문제 없음 - 정상적으로 작동하지만 일반적으로's'는 필요 없으며's'를 사용하고자하는 곳에는'bs'를 사용하십시오. –
고마워요! 멋진 것! –