Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > seekg(ios::end);


Автор: Atij 12.5.2008, 10:05
Добрый день.
У меня такая проблема, помогите пожалуйста. Я написал программу. По специфике задания у меня получается, что я вывожу в файл результат, в кот-ом практически всегда будет один лишний символ в конце. Ну так просто получается, не хочу вдаваться в подробности самого задания. Итак: ВСЕГДА перед этим "лишним символом" стоит ")". 
Почему у меня не работает данная конструкция?

Код

{ 
  in.seekg(0,ios::end); // здесь я хочу перекинуть маркер считывания файла на самый последний символ
  s=in.get(); // читаю этот символ
  if (s!=')') out<<" "; // если он не равен ")", то заменить на пробел. 
  
} 


я пробывал заменять in.seekg(0,ios::end); на in.seekg(-1,ios::end); а потом и на in.seekg(-2,ios::end); , но не прикаком из этих значений ничего кроме пробела s не получает, почему?

То что в файле "in.txt" до момента написания этого кода есть указанные мною симолы - убеждён.

Автор: Annihilator 12.5.2008, 10:27
вот так работает
Код

ifstream in("4.txt");
  in.seekg(-1,ios::end); // здесь я хочу перекинуть маркер считывания файла на самый последний символ
  s=in.get(); // читаю этот символ

Автор: Atij 12.5.2008, 10:45
Э... Вы хотели сказать: ofstream in("4.txt",ios::out); или fstream in("4.txt",ios::out); ? =)
Нет, дело не в этом, без этих строк у мну бы не компилилось всё это дело, мне не понятно, почему s не получает значений, то что вы сказали, я подключил.

Автор: Annihilator 12.5.2008, 11:09
Если из файла нужно считывать то его нужно открывать для чтения, т.е. надо использовать ifstream, а не ofstream

Автор: anatox91 12.5.2008, 11:11
Цитата(Atij @  12.5.2008,  10:05 Найти цитируемый пост)
вывожу в файл результат

а если открывать файл так:
Код

ofstream out("filename", ios::ate)

?

Автор: Annihilator 12.5.2008, 12:26
это для записи

Автор: anatox91 12.5.2008, 12:31
ну так Atij же пишет 
Цитата(Atij @  12.5.2008,  10:05 Найти цитируемый пост)
вывожу в файл результат


Автор: Annihilator 12.5.2008, 19:11
Цитата(anatox91 @ 12.5.2008,  16:31)
ну так Atij же пишет 
Цитата(Atij @  12.5.2008,  10:05 Найти цитируемый пост)
вывожу в файл результат

Тьфу, извини, глюканулsmile

Автор: Atij 13.5.2008, 05:30
Прошу прощенья, побежал вчера в универ, вернулся, инет лагает=(
Всем большое спасибо, вопрос решён.

Автор: lp_sun 18.5.2008, 12:09
народ, подскажите плз функцию для работы с потоками fstream, типа как fread\fwrite в stdio
есть ли такая функция которая побайтово считует нужное количество памяти и возвращает кол-во реально считанных байт
getline'ы разные не подходят, считывать нужно "сырые" данные

Автор: bsa 18.5.2008, 12:15
lp_sun, http://www.cplusplus.com/reference/iostream/istream/read.html
 smile 

Автор: lp_sun 18.5.2008, 13:23
bsa, да ну я решил не создавать новую тему из-за мелочевки...
read подходит, токо он не возвращает кол-во считанных символов (ну если раньше встретился конец файла например)
помоги как бы заменить это корректно....
readsome возвращает, но онаж токо с консолью вроде работает

Автор: bsa 18.5.2008, 17:35
lp_sun, http://www.cplusplus.com/reference/iostream/istream/gcount.html

Автор: lp_sun 18.5.2008, 21:29
bsa, йеееесс это как раз то, что мне нужно smile)) БЛАГОДАРЮ

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