STLの美しさを見た人は、可能な限りSTLを使用しようとします。また、生のポインターと配列を使用して、STLを見るところならどこでも使用するように勧めます。Scott Meyersは、STLに関する本全体をEffectiveSTLというタイトルで書いています。ifstream
しかし、彼らが好んchar*
だ開発者に何が起こったのかstd::string
。の最初のパラメータが。ではなくifstream::open()
タイプであるのはなぜだろうか。その署名を見てください:const char*
const std::string &
void open(const char * filename, ios_base::openmode mode = ios_base::in );
なぜこれ?なぜこれではないのですか?
void open(const string & filename, ios_base::openmode mode = ios_base::in );
これはデザインの重大な間違いですか?それとも、このデザインは意図的なものですか?理由は何でしょうか?char*
彼らがよりも好んだ理由はわかりませんstd::string
。char*
をとる後者の関数に渡すことができることに注意してくださいstd::string
。問題ない!
ちなみに、これifstream
はtypedefであることを認識しているので、私のタイトルについてのコメントはありません。短く見えるので使ってみました。
実際のクラステンプレートは次のとおりです。
template<class _Elem,class _Traits> class basic_ifstream;