問題:
POSIX ファイル記述子から直接 fstream オブジェクトを構築することは可能です。 C で挑戦する.
解決策:
Libstd
libstdc の場合、これを行う標準的な方法はありません。ただし、libstdc は、ファイル記述子入力を受け取る fstream 用の非標準コンストラクターを提供します。
例:
#include <ext/stdio_filebuf.h> using namespace std; int main() { int posix_handle = open("file.txt", O_RDONLY); // Open a file with POSIX handle __gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, ios::in); // Create stdio_filebuf from POSIX handle ifstream ifs(&filebuf); // Create ifstream from stdio_filebuf // Read from the file }
Microsoft Visual C
Microsoft Visual C では、FILE ポインターを受け入れる ifstream 用の非標準コンストラクターも提供しています。 _fdopen を呼び出して、POSIX ファイル記述子から FILE を取得できます。
例:
#include <cstdio> #include <fstream> using namespace std; FILE *_file = fopen("file.txt", "r"); // Open a file with C file handle ifstream ifs(_fdopen(_fileno(_file), "r")); // Create ifstream from FILE* // Read from the file
注:
これらは非対応です-標準コンストラクターは、すべての C 実装で使用できるわけではありません。特定の実装についてはドキュメントを確認することをお勧めします。
以上がPOSIX ファイル記述子から C fstream を構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。