POSIX ファイル記述子から C fstream を作成するには考慮が必要です。単純そうに見えますが、実装は複雑になる可能性があります。
標準 C ライブラリには、ファイル記述子から fstream を作成する直接メソッドは提供されていません。ただし、 libstdc などの一部の実装は、ファイル記述子または FILE* ポインターを入力として受け入れる非標準の拡張コンストラクターを提供する場合があります。
Libstdc は、 __gnu_cxx:: stdio_filebuf クラス テンプレート。std::basic_streambuf から継承し、関連付けるコンストラクターを持ちます。 POSIX ファイル記述子を使用したストリーム バッファー:
stdio_filebuf (int __fd, std::ios_base::openmode __mode, size_t __size=static_cast< size_t >(BUFSIZ))
このコンストラクターを使用した例:
#include <ext/stdio_filebuf.h> // Libstdc++ extension #include <iostream> int main() { ... int posix_handle = ...; __gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, std::ios::in); istream is(&filebuf); ...
Microsoft Visual C では、非-FILE* ポインターを受け入れる標準の ifstream コンストラクター:
explicit basic_ifstream(_Filet *_File);
これを使用できますコンストラクターを _fdopen とともに使用して、ファイル記述子から ifstream を作成します:
#include <cstdio> #include <iostream> int main() { ... int posix_handle = ...; FILE* c_stream = _fdopen(posix_handle, "r"); ifstream ifs(c_stream); ...
以上がPOSIX ファイル記述子から C fstream を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。