gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:41 26 4
gpt4 key购买 nike

我在从文件中读取图像时遇到问题,但是当有原始文本时它可以正常工作。我读到,任何文件都可以二进制模式读取,但我的输出只是这样:\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);

最佳答案

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

编辑:

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

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

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

这里是online demo

关于c++ - 从文件中读取图像 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36663360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com