私は持っています:
string filename:
ifstream file(filename);
コンパイラは、ifstreamファイルと文字列が一致しないことを訴えます。ファイル名を何かに変換する必要がありますか?
エラーは次のとおりです。
error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)’
/usr/include/c++/4.4/fstream:454: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
変化する
ifstream file(filename);
に
ifstream file(filename.c_str());
ifstream
のコンストラクターはconst char*
、C++ 11より前のstring
ではありません。
ifstream
コンストラクターは_const char*
_を想定しているため、ifstream file(filename.c_str());
を実行して機能させる必要があります。
c ++-11では、std :: stringにすることもできます。したがって、プロジェクトの方言をc ++-11に変更して(c ++-11をインストールし)、問題を解決することもできます。