Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Побитовое чтение из файла 
:(
    Опции темы
Mr_Nuke
Дата 9.4.2011, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



Всем привет! Столкнулся с такой проблемой, требуется посимвольно считать файл, включая пробелы. 
На С это можно сделать 
Код

FILE *f;
f = fopen("1.txt", "r");
temp = fgetc(f);

Я же пытаюсь написать подобное на с++, у меня получилось
Код

ifstream in;
in.open("1.txt");
char temp;
in >> temp;

Если добавить цикл, то in >> temp считает все символы, за исключением пробелов. Как Мне это подправить?
PM MAIL   Вверх
boostcoder
Дата 9.4.2011, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



во первых - это побайтовое чтение.
во вторых - вот: http://cplusplus.com/reference/iostream/istream/get/
PM WWW   Вверх
Mr_Nuke
Дата 9.4.2011, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



Ага, с чтением разобрался, но появилась другая проблема.. 
По ссылке приведен пример, пишу так же
Код

while (in.good())
    temp = in.get();

Но после последнего символа, он считывает еще один символ с кодом -1. Если вдруг кто-то скажет, что символ конца строки, то когда я его пишу обратно в файл, появляется обычный печатный символ. 
PM MAIL   Вверх
Mr_Nuke
Дата 9.4.2011, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



П.С. 
И еще сразу вопрос 
Код

in.open("1.txt");
out.open("2.txt");
  //  Читаю из файла 1, пишу в файл 2
in.close();
out.close();
  //  Хочу считать из файла 2, записать в файл 3. 
in.open("2.txt");
out.open("3.txt");
    
while (in >> c){  //  При первом же прохождении это условие не проходит. Хотя в 2.txt есть текст
}

in.close();
out.close();

Хотел спросить, надо создавать уже новые потоки? или я что-то делаю не так? 
PM MAIL   Вверх
Mr_Nuke
Дата 9.4.2011, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



Да и по поводу считывания, не совсем понятная картина, пытаюсь посимвольно считать рар архив, как только приходится считать символ не из стандартного алфавита, он сразу считывает символ с кодом -1, и на следующем шаге выходит :(
PM MAIL   Вверх
boostcoder
Дата 9.4.2011, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Mr_Nuke @  9.4.2011,  21:27 Найти цитируемый пост)
считать рар архив

при чтении бинарных файлов нужно добавлять std::ios::binary
Код

std::ifstream is("filename.ext", std::ios::binary);


Добавлено @ 21:37
Цитата(Mr_Nuke @  9.4.2011,  20:33 Найти цитируемый пост)
когда я его пишу обратно в файл, появляется обычный печатный символ.

пример с чтением и записью пожалуйста.


Это сообщение отредактировал(а) boostcoder - 9.4.2011, 21:43
PM WWW   Вверх
Mr_Nuke
Дата 9.4.2011, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



Не совсем понимаю, но щас он вместо "-1" повторно стал считывать последний символ. 
Выглядит это примерно так 

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  rsa.JPG 89,33 Kb
PM MAIL   Вверх
teesync
Дата 27.7.2022, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 26.7.2022

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
roatueque
Дата 8.2.2023, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.2.2023

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
scalosale
Дата 9.2.2023, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 8.2.2023

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1337 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.