#include "FilePairLineIterator.h" #include #include #include #include #include FilePairLineIterator::FilePairLineIterator( const char *filepath ) : ifstr( filepath ), lines( ifstr ) { } FilePairLineIterator::FilePairLineIterator( const std::string &filepath ) : ifstr( filepath.c_str() ), lines( ifstr ) { } FilePairLineIterator::FilePairLineIterator( std::istream &_is ) : lines( _is ) { } FilePairLineIterator::~FilePairLineIterator() { } unsigned int FilePairLineIterator::line() { return lines.line(); } bool FilePairLineIterator::eof() { return lines.eof(); } bool FilePairLineIterator::nextDataLine( std::string &filename1, std::string &filename2 ) { if( lines.eof() ) return false; std::string dataline = lines.nextLine(); while( !lines.eof() && ( (dataline.length() == 0) || ( (dataline.length() > 0) && ('#' == dataline.at(0)) ) ) ) { dataline = lines.nextLine(); } if( (dataline.length() > 0) && ('#' != dataline.at(0)) ) { std::istringstream instr( dataline.c_str() ); // Oakland/Females/US_Oakland_2879899.jpg Charlotte/Females/US_Charlotte_1951756.jpg instr >> filename1; if( 0 == filename1.length() ) return false; instr >> filename2; if( 0 == filename2.length() ) return false; return true; } else { return false; } }