2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Странная проблема с открытием файла типа *.cpp
Сообщение07.05.2019, 18:15 
Аватара пользователя
Задача открыть файл типа *.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.
На некоторых компах проходит через буфер обмена, в других нет, то есть триггер обрезания текста сильно нестабильный.
И подозрение, что нужно как-то работать с заголовком.
Что посоветуете?
Заранее спасибо за помощь.

 
 
 
 Re: Странная проблема с открытием файла типа *.cpp
Сообщение07.05.2019, 19:25 
Аватара пользователя
Вообще не понятно. *.cpp просто текст.
Каким образом отсекается основной текст.
Может кодировка? Не пойму в чем проблема.

 
 
 
 Re: Странная проблема с открытием файла типа *.cpp
Сообщение07.05.2019, 19:35 
1) UTF-8 файл может иметь специальный Unicode-заголовок. Это не по стандарту, но Windows в лице Microsoft (или наоборот?) плевать.
2) В любом случае ist >> str не будет читать весь файл целиком. Чтобы прочитать весь файл нужно использовать другие методы.

 
 
 
 Re: Странная проблема с открытием файла типа *.cpp
Сообщение07.05.2019, 20:12 
Аватара пользователя
В общем понял, что
Код:
ist >> str;

Прерывается на каждом пробеле.
Теперь задача загнать в string :: str весь текст.
Должен же быть метод.

-- Вт май 07, 2019 21:14:34 --

warlock66613 в сообщении #1391529 писал(а):
1) UTF-8 файл может иметь специальный Unicode-заголовок. Это не по стандарту, но Windows в лице Microsoft (или наоборот?) плевать.
2) В любом случае ist >> str не будет читать весь файл целиком. чтобы прочитать весь файл нужно использовать другие методы.

Спасибо, сейчас попробую.

-- Вт май 07, 2019 21:38:14 --

warlock66613
Еще раз спасибо! Ваша ссылка помогла, самое то.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group