// SEQREADER.CC // Read a sequence from a file. The file is assumed to contain a single // sequence, possibly split across multiple lines. Case is not preserved. // #include #include #include #include using namespace std; #include "SeqReader.h" #include "vector.h" const char *readSeq(const char *fileName, int *iseqLength) { ifstream is(fileName); Vector buffer; if (!is) { cout << "Error: could not open file " << fileName << endl; return NULL; } // Accumulate the sequence in a buffer (minus any whitespace). // Convert to lower case as we read. // while (!is.eof()) { char c; is >> c; if (!is.eof() && !isspace(c)) buffer.add(tolower(c)); } char *seq = new char [buffer.length() + 1]; memcpy(seq, buffer.elements(), buffer.length()); seq[buffer.length()] = 0; *iseqLength = buffer.length(); return seq; }