ホームページ >バックエンド開発 >C++ >POSIX ファイル記述子から C fstream を構築するにはどうすればよいですか?

POSIX ファイル記述子から C fstream を構築するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 11:58:13461ブラウズ

How Can I Construct a C   fstream from a POSIX File Descriptor?

POSIX ファイル記述子から C fstream を構築する

問題:
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 サイトの他の関連記事を参照してください。

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