【CC++开发】C++文件流关于seekg失效的问题

xiaoxiao2021-03-01  13

关于seekg失效的问题

当file.eof()=1的时候seekg就不好用了,当file.eof()=0的时候seekg是好用的。也就是说当一个文件读到尾部以后,不能再用seekg来移动或者定位了。通过建立该文件新的对象能解决这个问题。

如果只是输出的话可以用streambuf的rdbuf

#include<fstream> #include<iostream> #include<string> using namespace std; int main(){ ofstream ofile("test.txt"); ofile<<"hello this is testing fstream!"; ofile<<endl; ofile.close(); ifstream ifile("test.txt"); string line; for(int i=0; i<3; i++){ cout<<"this is "<<i<<" file"<<endl; ifile.clear(); while(getline(ifile,line)){ cout<<line<<endl; } cout<<"eof: "<<ifile.eof()<<endl; ifile.seekg(0,ios::beg); } ifile.close(); }

输出:

this is 0 filehello this is testing fstream!eof: 1this is 1 fileeof: 1this is 2 fileeof: 1

可以改用rdbuf

1 #include<fstream> 2 #include<iostream> 3 #include<string> 4 using namespace std; 5 6 int main(){ 7 ofstream ofile("test.txt"); 8 ofile<<"hello this is testing fstream!"; 9 ofile<<endl; 10 ofile.close(); 11 12 ifstream ifile("test.txt"); 13 string line; 14 for(int i=0; i<3; i++){ 15 cout<<"this is "<<i<<" file"<<endl; 16 cout<<ifile.rdbuf(); 17 cout<<"eof: "<<ifile.eof()<<endl; 18 ifile.seekg(0,ios::beg); 19 } 20 ifile.close(); 21 }

输出:

this is 0 filehello this is testing fstream!eof: 0this is 1 filehello this is testing fstream!eof: 0this is 2 filehello this is testing fstream!eof: 0

转载请注明原文地址: https://www.6miu.com/read-3849950.html

最新回复(0)