1

重複の可能性:
std::ifstream クラスの設計
(i|o)fstream がファイル名に const char* パラメータを取るのはなぜですか?

std::ifstream のコンストラクターを見ると、次の 2 つが見つかります。

ifstream ( );
explicit ifstream ( const char * filename, ios_base::openmode mode = ios_base::in );

2番目のものはなぜaconst char *ではなくaを取るのconst std::string &ですか?

これはある種の循環性または前方参照の回避ですか?

4

2 に答える 2

8

単純な省略でした。時間内に誰もそれについて考えませんでした。これは C++11 で修正されており、std::stringも受け入れられています。27.9.1.7/3 から:

explicit basic_ifstream(const string& s, ios_base::openmode mode = ios_base::in);

効果:と同じbasic_ifstream(s.c_str(), mode)

于 2012-09-25T00:06:25.663 に答える
0

コンパイラが古くなっています。std::stringそれをアップグレードすると、コンストラクターが見つかるはずです。

于 2012-09-25T00:06:40.110 に答える