Задача открыть файл типа *.cpp и поместить в объект типа
string для дальнейшего редактирования.
Вот один из опробованных вариантов кода:
Код:
#include <fstream>
#include <iostream>
#include <strstream>
////////////////// СЧИТЫВАЕМ СОДЕРЖИМОЕ ВХОДНОГО ФАЙЛА В БУФЕР ///////////////
filebuf outfile, infile;
/*fstream fp(in_fname, fstream::in);*/
if (!infile.open(in_fname, ios::in)) {
cerr << "Файл не открыт!";
return 1; // НЕТ ТАКОГО ФАЙЛА
}
string str; // СОЗДАЕМ ОБЪЕКТ (КОНТЕЙНЕР) ПОД БУФЕР
istream ist(&infile);
ist >> str;
if (!str.length()) {
return 2; // Входной файл пустой
}
Среда MS VS C++ 2017.
Размерность строки str.length() = 3. против >7000 через буфер обмена.
Пробовал проследить, почему вылетает через буфер обмена: где-то в районе заголовка появляется символ '\0', и текст обрезается до 3.
На некоторых компах проходит через буфер обмена, в других нет, то есть триггер обрезания текста сильно нестабильный.
И подозрение, что нужно как-то работать с заголовком.
Что посоветуете?
Заранее спасибо за помощь.