web-dev-qa-db-ja.com

FILE *ポインターからのfstreamオブジェクトの作成

fstreamオブジェクトを作成するよく知られた方法は次のとおりです。

_ifstream fobj("myfile.txt");
_

すなわち。ファイル名を使用します。

しかし、ファイル記述子を使用してifstreamオブジェクトを作成したいと思います。

理由:_popen()_popen()を使用してコマンドを実行したいのですが、出力を_FILE*_として返します。したがって、FILE *ポインタが含まれていますが、ファイル名はありません。

23
Tabrez Ahmed

IostreamとCI/Oは完全に分離されており、無関係であるため、標準のC++だけでこれを行うことはできません。ただし、C FILEストリームに基づくowniostreamを作成することはできます。 GCCには、ライブラリ拡張機能などのストリームクラスが1つ付属していると思います。

あるいは、C FILEストリームをラップするオブジェクトyの方法だけが必要な場合は、その目的のために 一意のポインターを使用 にすることができます。

3
Kerrek SB