我正在尝试使用 fstream 读取文件。然后当我到达最后我附加文件并写一些人员文件
abc
我写了示例代码
#include<iostream>
#include<fstream>
#include<queue>
using namespace std;
int main(int argc, char **argv){
fstream *binf;
binf=new fstream("t.txt", ios::out|ios::in|ios::app);
cout<<"EOF"<<EOF<<endl;
while(true){
cout<<"before peek"<<endl;
cout<<"binf->tellg:"<<binf->tellg()<<endl;
cout<<"binf->tellp:"<<binf->tellp()<<endl;
cout<<"binf->peek()::int=("<<(int)binf->peek()<<")::char=("<<(char)binf->peek()<<")"<<endl;
cout<<"after peek"<<endl;
cout<<"binf->tellg:"<<binf->tellg()<<endl;
cout<<"binf->tellp:"<<binf->tellp()<<endl;
char c;
if(binf->peek()==EOF){
cout<<"file is not good"<<endl;
break;
}
binf->get(c);
}
cout<<"binf->tellg:"<<binf->tellg()<<endl;
cout<<"binf->tellp:"<<binf->tellp()<<endl;
binf->seekg(3);
binf->seekp(3);
cout<<"binf->tellg:"<<binf->tellg()<<endl;
cout<<"binf->tellp:"<<binf->tellp()<<endl;
binf->put('H');
cout<<"binf->tellg:"<<binf->tellg()<<endl;
cout<<"binf->tellp:"<<binf->tellp()<<endl;
binf->seekg(4);
char c;
binf->get(c);
cout<<"c:"<<c<<endl;
binf->clear();
binf->close();
delete binf;
return 0;
}
这是我运行此代码得到的输出
EOF-1
before peek
binf->tellg:0
binf->tellp:0
binf->peek()::int=(97)::char=(a)
after peek
binf->tellg:0
binf->tellp:0
before peek
binf->tellg:1
binf->tellp:1
binf->peek()::int=(98)::char=(b)
after peek
binf->tellg:1
binf->tellp:1
before peek
binf->tellg:2
binf->tellp:2
binf->peek()::int=(99)::char=(c)
after peek
binf->tellg:2
binf->tellp:2
before peek
binf->tellg:3
binf->tellp:3
binf->peek()::int=(10)::char=(
)
after peek
binf->tellg:3
binf->tellp:3
before peek
binf->tellg:4
binf->tellp:4
binf->peek()::int=(-1)::char=(ÿ)
after peek
binf->tellg:-1
binf->tellp:-1
file is not good
binf->tellg:-1
binf->tellp:-1
binf->tellg:-1
binf->tellp:-1
binf->tellg:-1
binf->tellp:-1
c:
我要做的就是修复文件并在最后写入,但是,每当我在文件末尾看到 EOF 时,即使使用 peek() 文件也不再适合使用