gpt4 book ai didi

c++ - 用c++读取二进制文件出错

转载 作者:行者123 更新时间:2023-11-28 07:42:35 25 4
gpt4 key购买 nike

我尝试读入一个包含 charint & double 的二进制文件:

// open file
int pos = 0,n;
char str1,str2;

//string str;
ifstream fid(pfad.c_str(),std::ios::binary);
if (fid.good() != 1) {
printf(" ++ Error: The elegant bunch file %s doesn't exist.\n",pfad.c_str());
return 1;
}

// cut the header
while (pos<5) {
if (fid.eof()) {
printf(" ++ Error: elegant bunch file is strange\n");
return 1;
}

fid >> str1;

switch (pos) {
case 0: str2 = '&'; break;
case 1: str2 = 'd'; break;
case 2: str2 = 'a'; break;
case 3: str2 = 't'; break;
case 4: str2 = 'a'; break;
}

if (str1 == str2){
pos ++;
} else {
pos = 0;
}
}

// Read out the data
fid.seekg(19,ios_base::cur);

std::cout << fid.tellg() << std::endl;
fid >> n;
std::cout << fid.tellg() << std::cout;


printf("\n\n%i\n\n",n);
printf("\nOK\n");
return 0;

我用 fid >> str1 读取 char 效果很好。如果我尝试使用 int 执行此操作,它会以某种方式产生奇怪的行为。然后输出得到

813

-10x6c4f0484

0

其中第一个数字是文件中的位置,第二个数字应该相同,但它看起来像是指向我的指针。任何人都可以尝试澄清我的困惑吗?

提前致谢。

最佳答案

std::operator>>(std::istream&, int&) 尝试从字符流中解析一个整数,它不读取二进制数据。您需要使用 std::istream::read(char*, std::streamsize)功能。

关于c++ - 用c++读取二进制文件出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15497519/

25 4 0
文章推荐: javascript - Livecycle javascript...压缩 if 语句
文章推荐: ios - popViewController(动画 : true) animation works slow
文章推荐: javascript - 注入(inject)由 module.provider 定义的服务
文章推荐: jquery - 在应用程序的 .erb View 中交替使用 rails image_uploader.rb 生成
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com