考虑我有以下代码:
int main()
{
ofstream output("Brojevi.dat");
for(int i=0; i<=10; i++)
output.write((char*)&i, sizeof(i));
output.flush();
ifstream input("Brojevi.dat");
int broj;
while(input.read((char*)&broj, sizeof(broj)))
cout<<broj<<endl;
input.seekg(0, ios::beg);
while(input.read((char*)&broj, sizeof(broj)))
cout<<broj<<endl;
}
当我运行此程序时,输出只是0到10之间的数字。我想知道为什么他们打印两次,因为我有两个相同的while循环。有什么想法吗?
答案 0 :(得分:1)
首先以二进制模式打开output
和input
ofstream output("Brojevi.dat",ios::binary);
ifstream input("Brojevi.dat",ios::binary);
后
int broj;
while(input.read((char*)&broj, sizeof(broj)))
cout<<broj<<endl;
添加input.clear()
因为在上面的循环中你已经达到eof(),之后,所有的输入输出操作都将失效,所以你必须清除内部的eof位才能继续你的操作
工作代码:
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream output("Brojevi.dat",ios::binary);
for(int i=0; i<=10; i++)
output.write((char*)&i, sizeof(i));
output.flush();
ifstream input("Brojevi.dat",ios::binary);
int broj;
while(input.read((char*)&broj, sizeof(broj)))
cout<<broj<<endl;
input.clear();
input.seekg(0, ios::beg);
while(input.read((char*)&broj, sizeof(broj)))
cout<<broj<<endl;
}