Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Побитовое чтение из файла


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

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

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

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

Если добавить цикл, то in >> temp считает все символы, за исключением пробелов. Как Мне это подправить?

Автор: boostcoder 9.4.2011, 19:52
во первых - это побайтовое чтение.
во вторых - вот: http://cplusplus.com/reference/iostream/istream/get/

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

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

Но после последнего символа, он считывает еще один символ с кодом -1. Если вдруг кто-то скажет, что символ конца строки, то когда я его пишу обратно в файл, появляется обычный печатный символ. 

Автор: Mr_Nuke 9.4.2011, 20:51
П.С. 
И еще сразу вопрос 
Код

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();

Хотел спросить, надо создавать уже новые потоки? или я что-то делаю не так? 

Автор: Mr_Nuke 9.4.2011, 21:27
Да и по поводу считывания, не совсем понятная картина, пытаюсь посимвольно считать рар архив, как только приходится считать символ не из стандартного алфавита, он сразу считывает символ с кодом -1, и на следующем шаге выходит :(

Автор: boostcoder 9.4.2011, 21:34
Цитата(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 Найти цитируемый пост)
когда я его пишу обратно в файл, появляется обычный печатный символ.

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

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

Автор: teesync 27.7.2022, 02:03
Модератор: Сообщение скрыто.

Автор: roatueque 8.2.2023, 14:25
Модератор: Сообщение скрыто.

Автор: scalosale 9.2.2023, 01:50
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)