我以前一直用c编程,用的输入输出主要都是scanf,printf,fscanf,fprintf之类。跳文件指针,自然使用fseek。
最近尝试c++,遇到了各种各样的问题,其中一个是,使用fstream的getline函数后,如果没能读完一行,无论哪个重载,都会把该fstream的文件指针跳到-1。
显然我一开始不是这么理解这个函数的。我觉得这个函数应该是读到哪里就把指针跳到哪里——不管这一行读没读完。
#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
int main()
{
fstream fs;
fs.open("input.txt",ios::in);
if(!fs.is_open())
return 0;
char buf[500];
cout<<"tellg:"<<fs.tellg()<<endl;
cout<<"tellp:"<<fs.tellp()<<endl;
fs.getline(buf,50);
//fs.getline(buf,',',50);
cout<<"tellg:"<<fs.tellg()<<endl;
cout<<"tellp:"<<fs.tellp()<<endl;
fs.close();
system("pause");
}