Конструктор Error, печатает «а», а затем треугольник, прежде чем врезаться
QuBiEngine::QuBiEngine(ifstream& dnaFile)
{
int i = 0;
while(!dnaFile.eof()) //while the file isn't at its end
{
dna.push_back(""); //creates an element
if(!dnaFile.good())//checks for failbits and other errors
{
dna[i] = "Not a valid sequence";
i++;
continue;
}
getline(dnaFile, dna[i]);
//checks to see if the character is valid ie: a, t, c, g
for(int j=0; j<dna[i].length(); j++)
{
dna[i][j] = putchar(tolower(dna[i][j]));
if((dna[i][j]!='a')||(dna[i][j]!='t')||(dna[i][j]!='c')||(dna[i][j]!='g'))
{
dna[i] = "Not a valid sequence";
i++;
break;
}
}
i++;
}
}
Это берет каждую строку в dnaFile ifstream
и помещает его в вектор, если он проходит испытания, если это не то он просто помещает недопустимую вещь в вектор.
Возможно, вы не хотите использовать '! DnaFile.eof()'. Кроме того, какой тип ввода вы используете, который дает этот результат? – Xymostech
@ Xymostech Почему я не хочу использовать '! DnaFile.eof()'? Он даже не должен иметь выход, я прокомментировал все остальное, когда я строил свой объект. – SemicolonExpected
Просто использование возврата 'getline' обычно работает лучше и более надежно. Кроме того, вы печатаете, когда вы вызываете функцию 'putchar'. – Xymostech