次の行を含む C コード:
file.open(name);
よくあるエラーis:
no matching function for call 'std::ifstream::open(std::string&)'
この問題は、古いバージョンの C (C 11 より前) が std::string 引数を使用してファイルを開くことをサポートしていなかったために発生します。 open() 関数には、文字配列または C スタイルの文字列が必要でした。
このエラーを解決するには、次のいずれかの方法を使用できます。 :
file.open(name.c_str());
std::ifstream file(name.c_str());
このアプローチでは、構築とメソッドを分離する必要がなくなります。
さらに、loadNumbersFromFile() 関数がそのファイルの内容を変更しないようにするため、引数を指定する場合は、代わりに定数 std::string への参照によって渡すことをお勧めします:
std::vector<int> loadNumbersFromFile(const std::string& name) { // ... }
以上が古い C バージョンで「ifstream::open(std::string)」が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。