MFC
From Mesdoc
(→Quelles sont les différentes méthodes pour manipuler un fichier ?) |
|||
(One intermediate revision not shown) | |||
Line 1: | Line 1: | ||
- | |||
http://c.developpez.com/faq/vc/?page=Fichiers | http://c.developpez.com/faq/vc/?page=Fichiers | ||
Line 16: | Line 15: | ||
Globalement, on choisit d'utiliser CFile lorsqu'on utilise des fichiers en mode binaire et CStdioFile pour des fichiers en mode texte. | Globalement, on choisit d'utiliser CFile lorsqu'on utilise des fichiers en mode binaire et CStdioFile pour des fichiers en mode texte. | ||
L'API Win32 manipule les fichiers comme étant des fichiers binaires. | L'API Win32 manipule les fichiers comme étant des fichiers binaires. | ||
+ | |||
+ | ===Comment déplacer le pointeur de fichier ?=== | ||
+ | |||
+ | API Win32 : on utilise SetFilePointer | ||
+ | |||
+ | SetFilePointer(fichier,NULL,NULL,FILE_END); | ||
+ | |||
+ | CFile et ses dérivées : on utilise Seek, SeekToBegin ou SeekToEnd | ||
+ | |||
+ | cfile.SeekToEnd(); | ||
+ | |||
+ | |||
+ | ===Comment lire et écrire dans un fichier en mode texte ?=== | ||
+ | |||
+ | CStdioFile f1 ("c:\\\\test.txt", CFile::modeCreate | CFile::modeWrite | CFile::typeText ); | ||
+ | f1.WriteString("premiere ligne\ | ||
+ | "); | ||
+ | f1.WriteString("deuxieme ligne"); | ||
+ | f1.Close(); | ||
+ | |||
+ | CStdioFile f2 ("c:\\\\test.txt", CFile::modeRead | CFile::typeText ); | ||
+ | CString s1, s2; | ||
+ | f2.ReadString(s1); // s1 contient "premiere ligne" | ||
+ | f2.ReadString(s2); // s2 contient "deuxieme ligne" | ||
+ | f2.Close(); | ||
+ | |||
+ | Nb : pour ajouter un caractère de séparation de ligne, on utilise \ | ||
+ | (0x0A). | ||
+ | La fonction WriteString le transforme alors en 0x0D, 0x0A. Inversement, lorsqu'on lit la paire 0x0D, 0x0A, la fonction ReadString le transforme en \ | ||
+ | (0x0A) |
Current revision as of 20:57, 21 August 2006
http://c.developpez.com/faq/vc/?page=Fichiers
Contents |
[edit] Quelles sont les différentes méthodes pour manipuler un fichier ?
Pour manipuler un fichier en C/C++ il existe différentes méthodes.
- On peut utiliser les fonctions C classiques fopen, fread, etc ... (voir faq C http://c.developpez.com/faq/c/?page=fichiers)
- On peut utiliser les flux standards c++ (voir faq c++ http://c.developpez.com/faq/cpp/?page=fichiers)
Sous windows, on utilisera directement les API Win32 (CreateFile, ReadFile, ...) ou une surcouche comme les MFC (CFile et ses dérivées)
[edit] Que choisir entre l'API Win32 et la surcouche MFC (CFile, CStdioFile) ?
Tant qu'à utiliser les bibliothèques MFC, il est plus intéressant de privilégier les classes CFile ou CStdioFile qui sont plus faciles à manipuler que les fonctions de l'API. On utilisera les fonctions de l'API que lorsque le projet ne doit pas utiliser les MFC. Globalement, on choisit d'utiliser CFile lorsqu'on utilise des fichiers en mode binaire et CStdioFile pour des fichiers en mode texte. L'API Win32 manipule les fichiers comme étant des fichiers binaires.
[edit] Comment déplacer le pointeur de fichier ?
API Win32 : on utilise SetFilePointer
SetFilePointer(fichier,NULL,NULL,FILE_END);
CFile et ses dérivées : on utilise Seek, SeekToBegin ou SeekToEnd
cfile.SeekToEnd();
[edit] Comment lire et écrire dans un fichier en mode texte ?
CStdioFile f1 ("c:\\\\test.txt", CFile::modeCreate | CFile::modeWrite | CFile::typeText ); f1.WriteString("premiere ligne\
");
f1.WriteString("deuxieme ligne"); f1.Close();
CStdioFile f2 ("c:\\\\test.txt", CFile::modeRead | CFile::typeText ); CString s1, s2; f2.ReadString(s1); // s1 contient "premiere ligne" f2.ReadString(s2); // s2 contient "deuxieme ligne" f2.Close();
Nb : pour ajouter un caractère de séparation de ligne, on utilise \
(0x0A).
La fonction WriteString le transforme alors en 0x0D, 0x0A. Inversement, lorsqu'on lit la paire 0x0D, 0x0A, la fonction ReadString le transforme en \
(0x0A)