Вот в этом видимо вся проблема. Можно ли при выходе из блока оставить файл открытым?
Если Вы планируете использовать переменную (в том числе и файловую) вне блока, то и определять её нужно вне блока. Вне своего блока переменные не то, чтобы не видны, а вовсе не существуют. И при каждом входе в блок, объявленная в нём переменная создаётся заново, а при выходе из блока — уничтожается.
-- 06 июн 2015, 14:02 --Нет. Это запись основной части данных в файл.
У Вас запись в файл "part1.txt" производится в двух местах — вне цикла, и в каждой итерации цикла. При первой итерации, внутри блока
if команда
Out.close() закроет файл "part1.txt", но внешняя файловая переменная с этим именем остаётся, просто она уже не связана ни с каким файлом. Затем Вы объявляете внутри блока
if локальную переменную с тем же именем
Out, до конца блока она будет перекрывать внешнюю переменную. При выходе из блока локальная переменная
Out будет уничтожена, а внешняя снова войдёт в область видимости, но она по-прежнему не связана ни с одним файлом. При следующей итерации Вы выводите какие-то данные в эту переменную, то есть в никуда. Вот я и спросил — эта строка не лишняя?
-- 06 июн 2015, 14:14 --Возможно Вам нужно внутри блока
if не создавать локальную переменную с тем же именем
Out, а связать внешнюю переменную
Out с новым файлом? Если так, то замените
ofstream Out("part " + to_string(jpart) + ".txt", ios::binary); на
Out.open("part " + to_string(jpart) + ".txt", ios::binary);