从文件中读取图像 - C ++

时间:2016-04-16 11:11:53

标签: c++ image file

我在从文件中读取图像时遇到问题,但是当有原始文本时,它可以正常工作。我读过,任何文件都可以在二进制模式下读取,但我的输出就是这样:\ FF \ D8 \ FF \ E0然后停止。它停在这个角色,所以我不确定它是否只是无法解决该角色或什么。有谁知道什么是错的?提前谢谢。

这是我的代码

char* obsah;  
std::string sprava;
std::ifstream is (file.c_str(), std::ifstream::binary);
    if(is){
        is.seekg (0, is.end);
        int length = is.tellg();
        is.seekg (0, is.beg);
        obsah = new char [length];
        is.read(obsah,length);
        sprava = prepinac+"\r\n"+file+"\r\n\r"+obsah;
    }
    else exit(EXIT_FAILURE);

1 个答案:

答案 0 :(得分:2)

sprava是一个字符串。当您使用+连接其组件时,它将char* obsah作为空终止的c-string进行管理。因此,第一个null char之后的所有内容都不会被复制到sprava中。

修改

您可以在字符串中包含'\0'的二进制数据(请参阅here)。但是,在这种方法中需要非常小心,因为每当您将字符串转换为char*指针时,处理类似于空终止的c字符串,字符串的一部分可能会被忽略。如果你在I / O中使用你的字符串,它也可能会产生奇怪的结果。

但是,如果您想继续,可以使用std::copy()back inserter;

sprava = prepinac+"\r\n"+file+"\r\n\r"; 
  copy(obsah, obsah+length, back_inserter<string>(sprava)); 

这是online demo