#cpp #файлы
Предположим, что у меня есть поток для записи в файл ofstream f(name,ios::binary|ios::in); Можно ли узнать, установлен ли флаг ios::binary для этого потока или нет. Ну или как-то по-другому узнать что это бинарный поток.
Ответы
Ответ 1
Чтобы быстро всё исправить и все флаги сохранились попробуйте собственную подделку: // g++ fflags.cpp # include# include namespace Alex { class ofstream : public std::ofstream{ public: std::ios_base::openmode mo ; ofstream(const std::string& filename, std::ios_base::openmode m): std::ofstream(filename,m),mo(m|std::ofstream::out){} }; } void m(Alex::ofstream & f){ std::cout<<"ios::binary = "; if(f.mo bitand std::ios::binary) std::cout<<"Ok\n"; else std::cout<<"No\n"; } int main(){ char const * name = "test"; Alex::ofstream f(name,std::ios::binary|std::ios::in); m(f); } > ./a.out ios::binary = Ok Ответ 2
Никак не узнать. И для std::FILE* тоже не узнать как был открыт файл.
Комментариев нет:
Отправить комментарий