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 }
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
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!