2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Странная проблема с открытием файла типа *.cpp
Сообщение07.05.2019, 18:15 
Аватара пользователя


05/06/08
478
Задача открыть файл типа *.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 
Аватара пользователя


05/06/08
478
Вообще не понятно. *.cpp просто текст.
Каким образом отсекается основной текст.
Может кодировка? Не пойму в чем проблема.

 Профиль  
                  
 
 Re: Странная проблема с открытием файла типа *.cpp
Сообщение07.05.2019, 19:35 
Заслуженный участник


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

 Профиль  
                  
 
 Re: Странная проблема с открытием файла типа *.cpp
Сообщение07.05.2019, 20:12 
Аватара пользователя


05/06/08
478
В общем понял, что
Код:
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group