Попробуйте изменить это:
while(number1.good()){
number1 >> temp1;
cout<<temp1<<endl;
}
На:
while (number1 >> temp1)
cout << temp1 << endl;
и посмотрите, не будет ли это работать лучше.Проблема не в том, что он читает последний пробел как элемент, а в том, что stream.good()
остается верным до тех пор, пока после чтения не завершится, поэтому вы выполняете цикл слишком часто.1011 * В качестве альтернативы, замените все на что-то вроде этого:
int main() {
ifstream input("input.txt");
std::copy(istream_iterator<int>(input),
istream_iterator<int>(),
ostream_iterator<int>(cout, "\n"));
return 0;
}