В вашем коде есть несколько ошибок, но ни одна из них не объясняет описываемый вами признак (что невозможно с кодом, который вы разместили: вы выполняете цикл 40 раз и выводите каждый раз в цикле).В любом случае:
- У вас есть условие в `if` неправильно, так что это всегда так:` v` всегда либо больше 2 или меньше 15,
- Youу вас неправильное условие "while";вы пытаетесь прочитать 40 значений, независимо от того, что находится в файле
То, что ваш цикл, вероятно, должен выглядеть так:
while ( fin >> d ) {
if ( v >= 2 && v < 15 ) {
std::cout << v << std::endl;
}
++ v;
}
Это приведет к появлению элементов [2,15) для отображения при условии, что они присутствуют.
Если вы всегда отображаете одно и то же значение, возможно, что ввод после этого значения был неудачным, учитывая, что вы не проверяете, был ли ваш ввод успешным илине.Одно из возможных объяснений - моала, упомянутая в заметке: когда вы открываете файл, он наполняется текущей глобальной локалью.Попробуйте:
fin.imbue(std::locale("C"));
сразу после открытия файла;в большинстве языков десятичный разделитель - это запятая, а не точка.(Также: проверьте, что открытие прошло успешно.)