显示标签为“I/O”的博文。显示所有博文
显示标签为“I/O”的博文。显示所有博文

2009年2月28日星期六

How to open multiple files through single ifstream object?

怎样在定义了一个ifstream对象的情况下,打开多个文件。
重点:
每次打开新文件前,确保上一次的文件对象在close()之前被clear()!
// declare one ifstream object for every file

ifstream FileObject;

//open a input file which contain names of all files

ifstream InputFile("Input.txt");

while(std::getline(InputFile,buf)){
std::string name=buf;
FileObject.open(name.c_str());
if (!FileObject.is_open()){
//report error here.
continue;
}
while(std::getline(FileObject,buf2))
{ //doing some validation operations. }
//Clear the fileobject for next use
FileObject.clear();
//Prepare for next open,每次打开前都要clear和close
FileObject.close();
}

2007年3月9日星期五

seekg 无效时的处理。

当对ifstream操作,并处理到文件的结尾时,使用fi.seekg(0,ios::beg);无法重新回到fi的开头。
需要执行if(!fi) fi.clear();
然后再执行 fi.seekg(0,ios::beg);才可以正确执行。