Причина этого в том, что a
является массивом символов, а не потоком.Таким образом, каждый цикл, который вы записываете в одну и ту же позицию в памяти (и не добавляете вместо этого).
Вы можете просто создать объект ofstream
в начале и записать из потока в поток:
#include <fstream>
void main()
{
std::ifstream stream1("C:\\source.txt");
std::ofstream stream2("C:\\target.txt");
while(!stream1.eof())
stream2 << stream1;
stream1.close();
stream2.close();
}