Это потому, что по умолчанию открытый параметр для ofstream - ios::out
, который уничтожает содержимое файла. Это оставляет ваш объект inStream, считывающий мусор, в годовую переменную, потому что он указывает на тот же файл, содержимое которого было уничтожено. Отсюда твои странные цифры.
Пусть inStream откроет файл и прочитает содержимое, закроет его, затем откроет outStream и запишет. Это должно решить проблему, но было бы лучше убедиться, что во время обработки не возникнет проблем, прежде чем открывать и уничтожать содержимое файла. Если вы этого не сделаете, вы можете столкнуться с ошибкой и ничего не получить в файле. Прежде чем уничтожать предыдущее содержимое, убедитесь, что у вас есть хорошие данные для записи.
Чтобы показать, что то, что вы делаете, уничтожает файл:
#include <fstream>
using namespace std;
int main()
{
ofstream x;
x.open("ofTest.txt");
x.close();
return 1;
}
%> g++ test.cpp
%> cat ofTest.txt
Test file destruction
Test 1,2,3
%> ./a.out
%> cat ofTest.txt
%>