c++ - 读取时的 fstream unix 问题

标签 c++ unix fstream

我正在尝试读取 UNIX 上的二进制文件。文件存在,里面有一些数据信息。

代码如下所示:

fstrean fstrHandler;

string strFileName;

char Buf[30000];

fstrHandler.open(strFileName.c_str(), ios::in | ios::binary);

fstrHandler.seekp(0, std::ios_base::beg);

std::cout<< "Posi before read= "<< fstrHandler.tellg()<<endl; //*** Show after running 0

fstrHandler.read (Buf, 400);

std::cout<< "Posi after read= "<< fstrHandler.tellg()<<endl; //*** Show after running 0

std::cout<< " gcount ()= "<< fstrHandler.gcount ()<< << endl; //*** Show after running 0

if (fstrHandler.eof ()) {
       fstrHandler.clear();
}

读取后我得到文件中的位置仍然是零零,但文件不为空。

最佳答案

尝试使用 seekg 而不是 seekp,文件中是否有 400 字节?如果您输入一个包含超过 400 个字节的文件,这对我来说似乎没问题。如果小于,则 tellg after read 报告 -1,但 gcount() 是正确的。

此外,在打开文件后 - 测试文件是否确实已打开,例如

if (fstrHandler)
{
// do stuff
}
else
  std::cerr << "foo bar" << std::endl;

关于c++ - 读取时的 fstream unix 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4874530/

相关文章:

c++ - 非自愿上下文切换 : How can I prevent them?

c++ - 使用 cmake 交叉编译 gRPC

c - 理解 for 循环中的 fork()

c++ - 您在 Unix/Linux 下使用哪个 IDE 进行可视化调试?

C++ fstream - 仅读取某些变量类型的问题

c++ - 指针引用类型

c++ - 为什么游戏窗口在特定时间后关闭?

bash - 如何在 Bash 脚本中以 kb、mb、gb、b 为单位计算实际值

c++ - fstream 在 Qt Creator 中不起作用

c++ - 不确定如何在 main() 中将参数从类传递到构造函数