C++ 包裹向量时tellg和seekg不工作<;char>;在地峡
正如这个链接所说: 我使用C++ 包裹向量时tellg和seekg不工作<;char>;在地峡,c++,c++11,c++14,C++,C++11,C++14,正如这个链接所说: 我使用setg(vec.data(),vec.data(),vec.data()+vec.size());初始化streambuf。 之后,istream上的read()工作正常,但tellg()始终返回-1,并且seekg()始终失败 任何人都可以提供帮助?seekg和tellg通过pubseekoff和pubseekpos请求streambuf实际执行工作。这些功能的默认实现完全失败 您需要在streambuf中实现seekoff和seekpos。谢谢您的提问;我在引用相
setg(vec.data(),vec.data(),vec.data()+vec.size());
初始化streambuf。
之后,istream上的read()
工作正常,但tellg()
始终返回-1,并且seekg()
始终失败
任何人都可以提供帮助?
seekg
和tellg
通过pubseekoff
和pubseekpos
请求streambuf实际执行工作。这些功能的默认实现完全失败
您需要在streambuf中实现
seekoff
和seekpos
。谢谢您的提问;我在引用相同的链接后遇到了相同的问题
我只想补充一点,如果您遇到seekg()问题,并且担心实现此功能,我可以保证Boost选项:
boost::iostreams::basic_array_source<char> isrc(vec.data(), vec.size());
boost::iostreams::stream< typeof(isrc) > istr(isrc);
boost::iostreams::基本数组\源isrc(vec.data(),vec.size());
boost::iostreams::streamistr(isrc);
因为你不用自己编写实现就可以免费获得这个seek功能。你的意思是覆盖
seekoff
和seekpos
,对吗?我检查了stringstream的实现,它太复杂了。还有其他解决方案可以将向量包装到流中吗?谢谢stringbuf
心理训练很难,因为你可以混合读和写。对于只读streambuf来说并不难。好的,我试着像stringstream那样实现,现在看来效果不错