我正在编写一个简单的程序,将文件从原始类型转换为二进制形式。
但是,我遇到了以下问题。代码编译正确,但是当我运行它时,控制台窗口打开,永远不会关闭,直到我自己关闭它。此外,我注意到控制台窗口保持打开的时间越长,我新创建的二进制文件的大小就越大。以下是我的代码:
#include <fstream>//to open a file
using namespace std;
int main(void){
ifstream in("in.JPG");
ofstream out("out.bin", ios::binary);
double d;
while(!in.eof()) {
out.write((char*)&d, sizeof d);
}
out.close();
in.close();
return 0;
}
答案 0 :(得分:4)
您从未阅读in
中的任何内容,因此无法点击eof
。
此外,在循环条件中使用eof
可能会导致错误的结果,如以下SO问题所述:Why is iostream::eof inside a loop condition considered wrong?
(一般来说,目前还不清楚你要做什么。.jpg
是一种'二进制'格式,没有合理的概念'将.jpg
文件转换为二进制'。)