C++ 如何读取二进制文件并打印3';屏幕上有什么?
我想读取一个整数类型的二进制文件,并打印文件中出现的3的数字。我不知怎么写了一个程序来打开和读取二进制文件 以下是我面临的两个问题:C++ 如何读取二进制文件并打印3';屏幕上有什么?,c++,binary,C++,Binary,我想读取一个整数类型的二进制文件,并打印文件中出现的3的数字。我不知怎么写了一个程序来打开和读取二进制文件 以下是我面临的两个问题: 如果我尝试在终端上打印文件,执行将继续 永远,循环永远不会结束 我不知道如何从中过滤出3 这是我的密码: #include <iostream> #include <fstream> using namespace std; int main () { streampos size; char * memblock; ifstream
#include <iostream>
#include <fstream>
using namespace std;
int main () {
streampos size;
char * memblock;
ifstream file ("threesData.bin", ios::in|ios::binary|ios::ate);
if (file.is_open())
{
size = file.tellg();
memblock = new char [size];
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();
cout << "the entire file content is in memory";
for (int i = 0; i < size; i += sizeof(int))
{
cout << *(int*)&memblock[i] << endl;
}
delete[] memblock;
}
else
cout << "Unable to open file";
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
streampos大小;
char*memblock;
ifstream文件(“threesData.bin”,ios::in | ios::binary | ios::ate);
if(file.is_open())
{
size=file.tellg();
memblock=新字符[大小];
file.seekg(0,ios::beg);
file.read(memblock,size);
file.close();
cout以下是实现您的需求的方法:
int main()
{
unsigned int quantity = 0U;
ifstream file ("threesData.bin", ios::in|ios::binary|ios::ate);
uint8_t byte;
while (file >> byte)
{
if (byte == 3U)
{
++ quantity;
}
}
cout << "The quantity of 3s is: " << quantity << endl;
return 0;
}
intmain()
{
无符号整数数量=0U;
ifstream文件(“threesData.bin”,ios::in | ios::binary | ios::ate);
uint8_t字节;
while(文件>>字节)
{
如果(字节==3U)
{
++数量;
}
}
你的“二进制”文件的格式是什么?如果你不知道,你就不能写这个程序。我怀疑你可能误解了你的家庭作业练习。你明白cast(int*)的意思吗
正在做什么?size==0不是这样吗?甚至-1解决此类问题的正确工具是您的调试器。在询问堆栈溢出问题之前,您应该逐行检查代码。有关更多帮助,请阅读。至少,您应该[编辑]您的问题包括一个重现您的问题的示例,以及您在调试器中所做的观察。我怀疑执行最终会结束,只是看着一个int流经过很无聊