Maison > développement back-end > C++ > Comment puis-je construire un fstream C à partir d'un descripteur de fichier POSIX ?

Comment puis-je construire un fstream C à partir d'un descripteur de fichier POSIX ?

Mary-Kate Olsen
Libérer: 2024-12-14 11:58:13
original
458 Les gens l'ont consulté

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

Construire un fstream C à partir d'un descripteur de fichier POSIX

Problème :
Construire un objet fstream directement à partir d'un descripteur de fichier POSIX peut être difficile en C .

Solution :

Libstd

Pour libstdc , il n'existe pas de moyen standard de procéder. Cependant, libstdc propose un constructeur non standard pour fstream qui prend une entrée de descripteur de fichier.

Exemple :

#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
}
Copier après la connexion

Microsoft Visual C

Microsoft Visual C fournit également un constructeur non standard pour ifstream qui accepte un pointeur FILE. Vous pouvez appeler _fdopen pour obtenir le FILE à partir du descripteur de fichier POSIX.

Exemple :

#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
Copier après la connexion

Remarque :

Ces non -les constructeurs standard peuvent ne pas être disponibles dans toutes les implémentations C. Il est recommandé de consulter la documentation de votre implémentation spécifique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal