我正在使用boost来读取文件
但是当我将seekg
设置到文件中的某个位置(~20000)时,
我收到运行时错误
Microsoft C++ exception:
boost::exception_detail::clone_impl`<`boost::exception_detail::error_info_injector`<`std::ios_base::failure>>> at memory location 0x00EEC874.
代码:
ifstream if("file.bin",std::ios::binary)
if (if.is_open())
{
boost::iostreams::stream<boost::iostreams::mapped_file_source>is(fs);
is.seekg(20000, is.beg); //error is here
//// read
}
答案 0 :(得分:0)
该代码不应该编译。如果是,请向编译器供应商提交错误报告。
if
是保留关键字。
假设你弄乱了代码示例,(因为你也错过了;
),它应该可以工作,但你可能只是丢失文件/错误处理:
<强> Live On Coliru 强>
#include <boost/iostreams/device/mapped_file.hpp>
#include <boost/iostreams/stream.hpp>
#include <fstream>
#include <iostream>
int main() {
std::ifstream ifs("main.cpp",std::ios::binary);
if (ifs.is_open())
{
boost::iostreams::stream<boost::iostreams::mapped_file_source> is("main.cpp");
if (is.seekg(200, is.beg))
std::cout << is.rdbuf();
}
}