C++ 为什么';这个程序不能从.bin文件正确读取(或写入?)吗?(C+;+;)
我创建了这个程序:C++ 为什么';这个程序不能从.bin文件正确读取(或写入?)吗?(C+;+;),c++,file-io,binary-data,C++,File Io,Binary Data,我创建了这个程序: #include <iostream> #include <fstream> using namespace std; int main () { fstream file; file.open("test.bin", ios::in | ios::out | ios::binary); if(!file.is_open()) { return -1; } int n = 5; int x; file.wr
#include <iostream>
#include <fstream>
using namespace std;
int main () {
fstream file;
file.open("test.bin", ios::in | ios::out | ios::binary);
if(!file.is_open())
{
return -1;
}
int n = 5;
int x;
file.write(reinterpret_cast<char*>(&n), sizeof(n));
file.read(reinterpret_cast<char*>(&x), sizeof(x));
std::cout<<x;
file.close();
std::cin.ignore();
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
流文件;
open(“test.bin”,ios::in | ios::out | ios::binary);
如果(!file.is_open())
{
返回-1;
}
int n=5;
int x;
write(reinterpret_cast(&n),sizeof(n));
read(reinterpret_cast(&x),sizeof(x));
std::cout不是文件。write()在写入时移动当前文件指针,导致您从写入数据后的第一个位置读取数据?为了读取刚刚写入的数据,您必须在写入后将文件流重新定位到文件的开头
您还应该检查写入操作是否写入了您期望的所有内容,以及读取操作是否确实读取了任何内容。半随机数是由于读取失败造成的。在读取和写入命令之间插入文件。请参见kg(0);
。我同意Jherico的观点。您需要:
file.seekg (0, ios::beg);
否-不是908555的dup;这不包括读取任何数据。不需要ios::beg(seekg过载)