-2

Не могу понят как сделать порядок строк как в исходном.

**Строка строка строка строка

Строка строка строка строка

Строка строка строка строка** такой порядок в исходном файле

#include <iostream>
#include <fstream>
using namespace std;

int main() { system("chcp 1251"); ifstream file; ofstream file2; file.open("D:\Проекты\Копирование строк\Копирование строк\File1.txt", ios::in); file2.open("D:\Проекты\Копирование строк\Копирование строк\File2.txt",ios::out); string s; if (file.is_open() && file2.is_open()) { while (!file.eof()) { s = ""; file >> s; file2 << s; } file.close(); file2.close(); } }

Harry
  • 221,325
  • Ничего не понятно... Вы хотите просто скопировать содержимое одного файла в другой? И, кстати, за такое while (!file.eof()) джунам копчики массируют... – Harry Jul 19 '22 at 11:02

1 Answers1

1

Оператор >> читает до разделителя (пробел). Используйте std::getline().
перед проверкой состояния чтения из файла нужно сделать операцию чтения - только после нее изменяется состояние потока. Здесь можно потоки не закрывать, т.к. программа завершается, объекты разрушаются, деструкторы закроют потоки. В присваивании s = ""; нет смысла, т.к. всё равно в нее идет чтение.

#include <iostream>
#include <fstream>

using namespace std;

int main() { ifstream file; ofstream file2; file.open("File1.txt", ios::in); file2.open("File2.txt",ios::out);

string s;
if (!file.is_open() || !file2.is_open())
    return 1;

std::getline( file, s );
while (file)
{
    file2 &lt;&lt; s;
    std::getline( file, s );
}

}

DmitryK
  • 4,566