Здравствуйте Sah, Вы писали:
Sah>Hi! Sah>Can I test, what open_mode in stream?
Sah>I want: Sah>instream& Read(instream& is, CMyClass& my) Sah>{ Sah>if(is.???? & ios::binary) Sah>{ Sah>ReadFromBinary(is, my); Sah>} Sah>else Sah>{ Sah>ReadFromText(is, my); Sah>} Sah>return is; Sah>}
Собственно, неплохо бы было уточнить, о каком это instream речь идет? В стандартной библиотеке C++, AFAIK, нет такого класса.
Если имеется в виду std::istream, то никак — у него нет метода open и он не обязан различать binary и text режимы.
Если речь идет о std::ifstream, то, не завязываясь на детали реализации, насколько я знаю, тоже не узнаешь
Да и вообще, суета это — самому \r\n в \n преобразовывать (а ничем другим binary от text вроде и не отличается). Открывай всегда в binary и не мучайся
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте Sergey, Вы писали:
Sah>>I want: Sah>>instream& Read(instream& is, CMyClass& my) Sah>>{ Sah>>if(is.???? & ios::binary) Sah>>{ Sah>>ReadFromBinary(is, my); Sah>>} Sah>>else Sah>>{ Sah>>ReadFromText(is, my); Sah>>} Sah>>return is; Sah>>}
S>Собственно, неплохо бы было уточнить, о каком это instream речь идет? В стандартной библиотеке C++, AFAIK, нет такого класса.
Конечно ifstream, извините за описку. S>Если речь идет о std::ifstream, то, не завязываясь на детали реализации, насколько я знаю, тоже не узнаешь :-\
S>Да и вообще, суета это — самому \r\n в \n преобразовывать (а ничем другим binary от text вроде и не отличается). Открывай всегда в binary и не мучайся :))
Не только этим. А для вывода вообще это существенно.
Для меня это важно. Поведение объекта весьма отличается в том и в другом случае. :(
Ума не приложу, почему этого нет в fstream?
Спасибо за ответ.
Sergey.
Re[3]: Как узнать open_mode в открытом stream?
От:
Аноним
Дата:
23.04.02 09:05
Оценка:
Здравствуйте Sah, Вы писали:
Sah>Здравствуйте Sergey, Вы писали:
Sah>>>I want: Sah>>>instream& Read(instream& is, CMyClass& my) Sah>>>{ Sah>>>if(is.???? & ios::binary) Sah>>>{ Sah>>>ReadFromBinary(is, my); Sah>>>} Sah>>>else Sah>>>{ Sah>>>ReadFromText(is, my); Sah>>>} Sah>>>return is; Sah>>>}
S>>Собственно, неплохо бы было уточнить, о каком это instream речь идет? В стандартной библиотеке C++, AFAIK, нет такого класса.
Sah>Конечно ifstream, извините за описку. S>>Если речь идет о std::ifstream, то, не завязываясь на детали реализации, насколько я знаю, тоже не узнаешь :-\
S>>Да и вообще, суета это — самому \r\n в \n преобразовывать (а ничем другим binary от text вроде и не отличается). Открывай всегда в binary и не мучайся :)) Sah>Не только этим. А для вывода вообще это существенно.
Sah>Для меня это важно. Поведение объекта весьма отличается в том и в другом случае. :( Sah>Ума не приложу, почему этого нет в fstream?
Sah>Спасибо за ответ.
Смотрим ifstream::set_mode
int setmode( int nMode = filebuf::text );
Return Value
The _previous mode_ :) ; –1 if the parameter is invalid, the file is not open, or the mode cannot be changed.