Как указал user4581301, >>
автоматически пропустит любой пробел.Вы можете отключить это, используя std::noskipws
потоковый манипулятор и изменив file>>i
на file>>std::noskipws>>i
.Лучшее решение в целом - просто использовать std::getline
для считывания всей строки в std::string
, перевернуть ее и распечатать вместо обработки отдельных символов.
#include <string>
#include <fstream>
#include <iostream>
#include <algorithm>
int main()
{
std::ifstream file("input.txt");
//insert error checking stuff here
std::string line;
std::getline(file, line);
//insert error checking stuff here
std::reverse(line.begin(), line.end());
std::cout << line << '\n';
}
Просто примечание о вашем кодеВы должны объявлять переменные только тогда, когда они используются.Например, ваша переменная x
используется только в конце программы, но она объявляется полностью вверху.using namespace std
также можно считать плохой практикой .