Joh*_* S. 8 c++ binary integer ifstream
我的代码就像这样:
更新:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char **argv)
{
ifstream r("foo.bin", ios::binary);
ofstream w("foo.bin", ios::binary);
int i;
int ints[10] = {0,1,2,3,4,5,6,8,9};
w.write((char*)&ints, sizeof(ints));
int in_ints[10];
r.read((char*)&in_ints, sizeof(in_ints));
for(i = 0;i < 10;i++) {
cout << in_ints[i] << " ";
}
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,写入部分似乎成功,例如运行32位长的od命令(我的系统是32位)将显示正确的序列,包括十六进制转储.
然而,读取时,我得到的随机序列和负整数不应该发生(它被拆分,并且大多数为零,因为我的整数很小,符号位不应该打开.)
你知道为什么我的read方法无法工作,当它真的与我的write方法相反时?
小智 6
这段代码:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
{
ofstream w( "foo.txt" );
int ints[10] = {0,1,2,3,4,5,6,8,9};
w.write((char*)&ints, sizeof(ints));
}
{
ifstream r( "foo.txt" );
int in_ints[10];
r.read((char*)&in_ints, sizeof(in_ints));
for( int i = 0; i < 10; i++) {
cout << in_ints[i] << " ";
}
}
}
Run Code Online (Sandbox Code Playgroud)
打印:
0 1 2 3 4 5 6 8 9 0
请注意,您的初始化中缺少一些数字.