ホームページ >バックエンド開発 >C++ >私の `ifstream.open()` が Dev-C の文字列で機能しないのはなぜですか?

私の `ifstream.open()` が Dev-C の文字列で機能しないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 20:53:14206ブラウズ

Why Doesn't My `ifstream.open()` Work with a String in Dev-C  ?

Open Function Not Found for ifstream in dev cpp

提供されたコードは、file.open(name) を使用してファイルを開こうとします。名前は文字列です。ただし、このコードは Visual Studio (VS) では正常にコンパイルされますが、dev cpp では正常にコンパイルされません。エラー メッセージは、文字列引数を持つ open メソッドに一致する関数がないことを示しています。

この問題の根本的な原因は、open 関数での文字列引数の使用のサポートが C 11 でのみ導入されたことです。 VS は C 11 をサポートしていますが、dev cpp はこれを含まない古いバージョンの C 標準を使用しているようです。

解決策:

この問題を解決するには、2 つのアプローチがあります:

  1. c_str( ): c_str() メソッドを使用して文字列引数を文字配列に変換し、その配列をオープンに渡します。 function:

    file.open(name.c_str());
  2. Use Constructor: あるいは、文字列引数を取る ifstream のコンストラクターを使用することもできます:

    std::ifstream file(name.c_str());

また、不要なコピーを避けるために、文字列引数を渡すことをお勧めします定数参照によるloadNumbersFromFile():

std::vector<int> loadNumbersFromFile(std::string const&amp; name)

以上が私の `ifstream.open()` が Dev-C の文字列で機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。