2015-05-13 47 views
1

我使用升压读取文件 但是,当我设置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

该代码不应该编译。如果是这样,请向编译器供应商提交错误报告。

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