设置读取光标失败

时间:2015-05-13 07:20:42

标签: c++ boost

我正在使用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
}

1 个答案:

答案 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();
    }
}